Sales Force Winter10 Release Notes
Sales Force Winter10 Release Notes
Sales Force Winter10 Release Notes
Note: Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may
not be delivered on time or at all. Customers who purchase our services should make their purchase decisions based upon features that are
currently available.
Table of Contents
About the Release Notes.......................................................................................................................................................................2
Summary of Winter '10 Features and Impact on Salesforce.com Users................................................................................................3
Sales Cloud Enhancements.......................................................................................................................................................3
Service Cloud Enhancements....................................................................................................................................................5
Custom Cloud Enhancements..................................................................................................................................................7
Sales Cloud........................................................................................................................................12
Campaign Enhancements.......................................................................................................................................................12
Salesforce to Salesforce Enhancements...................................................................................................................................17
Salesforce CRM Content Enhancements...............................................................................................................................22
Content Deliveries—Generally Available...............................................................................................................................25
Salesforce Mobile Enhancements............................................................................................................................................31
Additional Sales Cloud Enhancements...................................................................................................................................37
Service Cloud....................................................................................................................................39
High-Volume Customer Portal Users......................................................................................................................................39
Additional Service Cloud Enhancements................................................................................................................................43
Custom Cloud...................................................................................................................................46
Analytics Enhancements.........................................................................................................................................................46
Lookup Filters—Beta..............................................................................................................................................................53
Enhanced Profile Management...............................................................................................................................................59
Process Visualizer—Generally Available.................................................................................................................................63
Workflow Email Alerts—Override the From Email Address.................................................................................................70
Force.com Sites Enhancements...............................................................................................................................................72
Formula Enhancements...........................................................................................................................................................75
Fast Data Loading with New Bulk API..................................................................................................................................77
Force.com Web Services API Enhancements.........................................................................................................................80
Force.com Apex Code Enhancements.....................................................................................................................................82
Batch Apex .............................................................................................................................................................................86
Apex Scheduler—Limited Release..........................................................................................................................................88
Custom Settings......................................................................................................................................................................93
Force.com Development as a Service......................................................................................................................................99
Cloud Deploy—Change Sets Beta........................................................................................................................................104
Remote Access Applications.................................................................................................................................................112
Single Sign-On for Portals....................................................................................................................................................116
Force.com Platform Documentation Enhancements............................................................................................................119
Additional Custom Cloud Enhancements............................................................................................................................120
i
About the Release Notes
2
Summary of Winter '10 Features and Impact on Salesforce.com Users
3
Summary of Winter '10 Features and Impact on Salesforce.com Users
Salesforce Mobile
SSL Connection
4
Summary of Winter '10 Features and Impact on Salesforce.com Users
5
Summary of Winter '10 Features and Impact on Salesforce.com Users
6
Summary of Winter '10 Features and Impact on Salesforce.com Users
Community
Automatically
enabled for new
organizations.
Existing
organizations must
enable this feature
Analytics Enhancements
7
Summary of Winter '10 Features and Impact on Salesforce.com Users
Apex Scheduler
Custom Settings
8
Summary of Winter '10 Features and Impact on Salesforce.com Users
Customization Enhancements
Formula Enhancements
9
Summary of Winter '10 Features and Impact on Salesforce.com Users
Security Enhancements
10
Summary of Winter '10 Features and Impact on Salesforce.com Users
Workflow Enhancements
11
SALES CLOUD
Campaign Enhancements
Available in: Enterprise, Unlimited, and Developer Editions
Available for an additional cost in: Professional Edition
Campaign Summaries
You can now use roll-up summary fields on campaigns to summarize campaign member statuses or campaign member
custom fields.
Campaign Assistant
When you enable the Winter '10 New Campaign Member Creation Behavior update, Salesforce.com evaluates triggers,
validation rules, and workflow rules for campaign members created using the campaign member import and update
wizards. When you activate this update, you have the option to run workflow and define custom fields when you create
campaign members using these methods.
• You can now upload up to 50,000 records using the Campaign Update Wizard.
• If your organization uses multiple currencies, you can now use the Campaign Member Currency field on campaign
members—formerly the Currency field—to track financial figures for campaign members. Previously, this field
was read-only and displayed the organization's corporate currency. Also see CampaignMember in the changed objects
section in Force.com Web Services API Enhancements.
• Campaign member records created after October 20, 2009 are counted at 1 KB per record in data storage. To view
your organization’s data storage usage, click Setup ➤ Data Management ➤ Storage Usage.
• The Update Members — Import File option in the Manage Members drop-down button on campaign detail page
is now called Update & Add Members — Import File.
• The Update Campaign History button is now called Update & Add Campaign Members.
12
Sales Cloud Campaign Enhancements
Implementation Tips
• Create campaign member record types for each channel, for example: email, direct mail, Web response, and trade show.
• Use campaign roll-up summary fields to create RSVP counts based on member status or a custom RSVP field on campaign
members.
• Use the currency field to track registration fees for an international event with participants paying with several currencies.
Campaign member record types control the page layout for members of a campaign. For example, you can create a page layout
with email custom fields and a page layout with event custom fields, then associate these layouts with campaign member record
types called Email and Event, respectively.
Campaign member record types are assigned per campaign, so members of campaigns assigned the Email campaign member
record type will have email custom fields, and members of campaigns assigned the Event campaign member record type will
have event custom fields.
To create campaign member record types, click Setup ➤ Customize ➤ Campaigns ➤ Campaign Members ➤ Record
Types. For more information, see “Creating Record Types” in the Salesforce.com online help.
Assign campaign member record types using the Campaign Member Type field on new or existing campaigns.
13
Sales Cloud Campaign Enhancements
Campaign Summaries
Available in: Enterprise, Unlimited, and Developer Editions
Available for an additional cost in: Professional Edition
Create up to five roll-up summary fields on a campaign to summarize the status of the campaign's members, or the values of
campaign member custom fields. For example, create a roll-up summary field on a campaign to track RSVP count based on
an RSVP custom field on the campaign's members.
To create roll-up summary fields on a campaign, click Setup ➤ Customize ➤ Campaigns ➤ Fields, then click New in the
Custom Fields & Relationships section. For more information, see “Adding Fields and Relationships” in the Salesforce.com
online help and “About Roll-Up Summary Fields” in the Salesforce.com online help.
What is the Winter '10 New Campaign Member Creation Behavior Update?
Available in: Enterprise, Unlimited, and Developer Editions
Available for an additional cost in: Professional Edition
The Winter '10 New Campaign Member Creation Behavior update enables Salesforce.com to evaluate triggers, validation
rules, and workflow rules when you create campaign members using:
Additionally, the New Campaign Member Creation Behavior allows you to map import fields to campaign member custom
fields. For example, you can now map “Attended?” and “# Questions Asked” fields in an import file to campaign member
custom fields called “Attended?” and “# Questions Asked.”
14
Sales Cloud Campaign Enhancements
When you activate this update, you have the option to run workflow and map campaign member custom fields when you
create campaign members using the Lead Import Wizard or Campaign Update Wizard. Workflow runs automatically and
default campaign member custom field values are automatically populated for campaign members created using Web-to-Lead
or the Campaign field when you create or clone a lead.
If you deactivate this update, Salesforce.com does not evaluate the triggers, validation rules, and workflow rules for campaign
members created using the Lead Import Wizard, Campaign Update Wizard, Web-to-Lead, or the Campaign field when
creating or cloning a lead, and you can't map import fields to campaign member custom fields.
Important: This critical update changes the behavior of campaign members created using the campaign member
wizards, Web-to-Lead, and the Campaign field when creating a new or cloned lead. Customizations to these features
may behave differently when you activate this update, for example:
• Lead and campaign member triggers dependent on simultaneous campaign member and lead creation won't work
because campaign members are created after leads.
• If import file data conflicts with existing campaign member triggers and validation rules, the leads and campaign
members will not be inserted.
• Apex triggers that result in leads being converted before being added to a campaign, for example, an after
insert trigger, result in a campaign member with only contact fields populated. These records are not included
in the campaign's converted lead count.
If your organization has any of these customizations, read the examples to understand how you might be affected and
how you can correct unintended functionality.
Salesforce.com recommends activating this update because it ensures that campaign members are created with the same rules
regardless of how they are created. and the quality of your data is improved.
Important: Activation of this update impacts campaign member records in the user interface, API, and desktop
clients, such as Connect for Outlook.
The Winter '10 New Campaign Member Creation Behavior update is automatically activated for new customers that sign up
after the Winter '10 release in October 2010; if this update is automatically activated, you can't deactivate it.
If this update is not activated by default, Salesforce.com automatically activates the update on the date specified in the
auto-activation column on the Critical Updates page. Before that time, Salesforce.com recommends testing the update by
activating it in your Sandbox or production environment during off-peak hours. You can activate and deactivate the update
an unlimited number of times.
Activating the Winter '10 New Campaign Member Creation Behavior Update
To activate the Winter '10 New Campaign Member Creation Behavior update:
15
Sales Cloud Campaign Enhancements
Deactivating the Winter '10 New Campaign Member Creation Behavior Update
To deactivate the Winter '10 New Campaign Member Creation Behavior update:
• Update activated: You can choose to run workflow rules from the Lead Import Wizard. Your workflow rule is
evaluated for imported members and the newsletters are sent.
• Update deactivated: Your workflow rule isn't evaluated for members added to the campaign via the Lead import
Wizard and the newsletters aren't sent.
• Update activated: The Apex trigger fires for campaign members updated using the Campaign update Wizard, and
the Number Attended campaign custom field is updated.
• Update deactivated: The Apex trigger doesn't fire for members updated using the Campaign Update Wizard and
the Number Attended campaign custom field isn't updated.
• Update activated: Campaign members imported with the status “RSVP-Yes” must also have the “RSVP-Yes” field
in the import file set to “TRUE,” or they aren't created.
• Update deactivated: You can import campaign members with the status “RSVP-Yes,” regardless of the “RSVP-Yes”
custom field value.
• Update activated: You can map these import fields during import to campaign member custom fields called “Attended?”
and “# Questions Asked.”
• Update deactivated: You cannot map these import fields to campaign member custom fields.
16
Sales Cloud Salesforce to Salesforce Enhancements
If your partners use Salesforce.com, it is beneficial to connect your Salesforce.com organizations so that you can share
records and collaborate on relevant business processes. Before you can connect, you need to find out if your partners use
Salesforce.com. Use Connection Finder to email your partners a link to a simple survey asking if they use Salesforce.com.
Survey responses are recorded on the contact and account records for each partner. You can then create a custom list
view or custom report to track survey responses in one convenient location. Once you know a partner's status, you can
invite them to connect using Salesforce to Salesforce.
Sharing Attachments
You can now share attachment records with Salesforce to Salesforce connections. If you subscribe to the Attachment
object, public attachments with the Share With Connections checkbox selected are automatically shared when you
share the parent record.
Logging Errors
Salesforce to Salesforce now logs errors in the Connection History related list and sends email notifications with error
details to the connection owner. Logging errors enforces data integrity in sharing relationships.
Connection Finder
If your partners use Salesforce.com, it is beneficial to connect your Salesforce.com organizations so that you can share records
and collaborate on relevant business processes. Before you can connect, you need to find out if your partners use Salesforce.com.
Use Connection Finder to email your partners a link to a simple survey asking if they use Salesforce.com. Survey responses
are recorded on the contact and account records for each partner. You can then create a custom list view or custom report to
17
Sales Cloud Salesforce to Salesforce Enhancements
track survey responses in one convenient location. Once you know a partner's status, you can invite them to connect using
Salesforce to Salesforce.
Connection Finder allows you to email surveys to find out if your partners are Salesforce.com customers. Once you know a
partner's status, you can invite them to connect using Salesforce to Salesforce.
To use connection finder, you must perform the following activities:
18
Sales Cloud Salesforce to Salesforce Enhancements
2. Click Edit.
3. Select an email template.
The default connection finder template is automatically selected. You can also create custom email templates for your
survey.
Note: Custom email templates must contain the survey URL. {!Contact.PartnerSurveyURL} is available
as a contact merge field when creating templates.
Salesforce.com recommends adding a branded logo, as it appears at the top of the survey page. If no logo is selected, the
logo portion of the survey page remains blank.
5. Click Save.
If your partners use Salesforce.com, it is beneficial to connect your Salesforce.com organizations so that you can share records
and collaborate on relevant business processes. Before you can connect, you need to find out if your partners use Salesforce.com.
Use Connection Finder to email your partners a link to a simple survey asking if they use Salesforce.com. Survey responses
are recorded on the contact and account records for each partner. You can then create a custom list view or custom report to
track survey responses in one convenient location. Once you know a partner's status, you can invite them to connect using
Salesforce to Salesforce.
1. In the Contact list view, select the partners you want to survey and click Find Connections. Alternatively, on a contact
detail page, click Find Connections.
Note: Find Connections doesn't appear if:
If the contact is a person account, Find Connections appears in the list view, but shows an error message if the
user clicks the button. Find Connections does not appear on the contact detail page.
19
Sales Cloud Salesforce to Salesforce Enhancements
Note: The default email template is selected by your administrator. You can select a different template or edit the
body text, however, you must include the survey URL: {!Contact.PartnerSurveyURL}.
You cannot edit body text if you chose multiple recipients.
Note: The number of emails you can send is determined by the daily mass email limit.
The email is sent to the selected partners, who have 90 days to respond to the survey before the link becomes invalid. The
partner's response is recorded in the Uses salesforce.com field on the partner's contact record and the Salesforce.com
Customer field on the account record.
Tip: Salesforce.com recommends creating a custom list view or custom report so that you can track customer responses
in one convenient location.
If the partner's organization uses Salesforce.com, the survey displays a section asking if the recipient has administrator privileges
for Salesforce.com. If not, the recipient can optionally provide their administrator's contact information and a new contact
record is created in Salesforce.com for that user, unless one already exists.
Note: This section doesn't show up if a contact for that partner, whose Uses salesforce.com value is Yes,
admin user, already exists in your organization .
• Create a custom list view or custom report to track your survey responses in one location. Add the Uses salesforce.com
field to contact list views and reports. Add the Salesforce.com Customer field to account list views and reports.
• Create translated versions of the default connection finder template to send to international partners. To do so, clone the
default template, make the necessary language changes, and include the survey URL: {!Contact.PartnerSurveyURL}.
You can then choose the appropriate template when sending out requests to your partners.
Note: The survey page is in English, but includes a Language drop-down so that recipients can view the survey
in their native language.
• If a partner provides details for their Salesforce.com administrator, Salesforce.com checks to see if there is already a contact
in your Salesforce.com organization with that email address. If so, the Uses salesforce.com field on the contact record
is set to Yes, admin user. If the field is already set to No, it is not updated.
Note: A partner can only add an administrator if one does not already exist as a contact in your organization.
• The Salesforce.com Customer field is dependant upon the values in its contacts' Uses salesforce.com field.
20
Sales Cloud Salesforce to Salesforce Enhancements
Sharing Attachments
Available in: All Editions
Sharing Attachments
You can share attachments as child records of any supported object. Attachments are automatically accepted by a connection,
providing the following criteria are met:
• The Attachment object type is published to your connection and your connection is subscribed to the object.
• The parent record for the attachment is shared with the connection.
• The attachment is not marked “Private.”
• The Share With Connections checkbox on the attachment is selected.
To stop sharing attachments:
1. From the parent record's detail page, click Edit next to the attachment.
2. Select the Private checkbox. Alternatively, deselect the Share With Connections checkbox.
3. Click Save.
Logging Errors
Available in: All Editions
Salesforce to Salesforce now logs details in the Connection History related list for errors that occur as a result of the following
activities:
An email containing details about the error(s) is also sent to the connection owner.
To view the list of errors:
21
Sales Cloud Salesforce CRM Content Enhancements
Content API Support for Bulk Insert and Update with the Force.com Data Loader and Excel Connector
Bulk insert and update documents into Salesforce CRM Content via the API and the Force.com Data Loader or Excel
Connector.
22
Sales Cloud Salesforce CRM Content Enhancements
You asked for it! This enhancement is an idea from the IdeaExchange.
Content API objects allow you to query content documents, versions, and workspaces and also create and upload document
versions into Salesforce CRM Content. For more information, see the Force.com Web Services API Developer's Guide.
Content API Support for Bulk Insert and Update with the Force.com Data
Loader and Excel Connector
You asked for it! This enhancement is an idea from the IdeaExchange.
Perform document migrations or bulk edits in Salesforce CRM Content via the API and the Force.com Data Loader or Excel
Connector. For more information, see the Force.com Web Services API Developer's Guide.
Salesforce CRM Content is available in Salesforce Mobile. Users can share content with customers and colleagues from the
mobile application when they're away from their desks. To enable Salesforce CRM Content for the mobile application, mobilize
the content object and specify which content records are synchronized to the mobile device. For more information, see Salesforce
CRM Content for Salesforce Mobile.
23
Sales Cloud Salesforce CRM Content Enhancements
The document viewer allows users to view a document without downloading it, whether it be in a content delivery sent to a
prospect, partner, or colleague, or internally in Salesforce CRM Content. The document viewer has three modes: the Preview
tab on the content details page (preview mode), the content delivery URL (delivery mode), and full screen mode, which displays
when you click the full-screen option on the content details page or in a content delivery. In Winter '10 the document viewer
has been updated to provide the following capabilities for easy navigation :
• In addition to using the next page ( ), previous page ( ), first page ( ), and last page ( ) icons on the document tool
bar, you can navigate page-by-page through a document by right-clicking and choosing Next Page and Previous Page.
The right-click menu is not available in preview mode.
• You can jump directly to a page by entering the page number and clicking Enter. This option is not available in full-screen
mode.
• From the right-click menu you can choose the Fit Width option to expand the width of the document or the Fit Full
Page option to view the whole page of the document. The fit width icon ( ) and fit full page icon ( ) are also available
on the tool bar.
• From the right-click menu you can choose the Full Screen option to view the document in full screen mode or the Exit
option to exit full screen mode. The full screen icon ( ) and exit icon ( ) are also available on the tool bar.
• From the right-click menu you can Zoom In or Zoom Out. The zoom-in icon ( ) and zoom-out icon ( ) are also
available on the tool bar.
• You can use the scroll bar to move continuously through a document without needing to click the Next Page and Previous
Page icons. Continuous scrolling is not available in preview mode or for PowerPoint documents in any mode.
• You can use the keyboard arrow keys to navigate page-by-page through a document. Click on the document viewer and
use the keys as follows:
- Right-arrow key: moves a PowerPoint document forward one slide and moves a PDF, Word, or Excel document
forward one page.
- Left-arrow key: moves a PowerPoint document backward one slide and moves a PDF, Word, or Excel document
backward one page.
- Up-arrow key: moves a PowerPoint document forward one slide and scrolls a PDF, Word, or Excel document up the
page.
- Down-arrow key: moves a PowerPoint document backward one slide and scrolls a PDF, Word, or Excel document
down the page.
To enable these features for your organization, click Setup ➤ Customize ➤ Salesforce CRM Content ➤ Settings and select
Enable enhanced document viewer.
24
Sales Cloud Content Deliveries—Generally Available
You asked for it! This enhancement is an idea from the IdeaExchange.
Previously, when you searched for a term in Salesforce CRM Content, the search engine would perform a full-text search of
the following file types: rich-text format (RTF), UTF-8 encoded TXT, HTML, XML, Adobe® PDF, and Microsoft Office
97 through Microsoft Office 2003 Word, Excel, and PowerPoint files. Search results containing Office 2007 files would only
be returned if the search term was found in metadata. Now, full-text search is also supported for Office 2007 Word, Excel,
and PowerPoint files.
You asked for it! This enhancement is an idea from the IdeaExchange.
Content types are the containers for custom fields in Salesforce CRM Content; content types determine which fields are available
during the publishing process and how the fields display on the content details page.
In Winter '10 you can generate a report that tells you which content type is assigned to each piece of content. To generate a
report, go to the Reports tab and choose Create New Custom Report ➤ Salesforce CRM Content ➤ Content Report.
A content delivery allows you to easily convert documents such as Microsoft® PowerPoint and Word files into an optimized
web-based version for easy online viewing. Once you create your delivery, you can send its encrypted URL to any recipient,
such as leads, customers, partners, and colleagues, and then track how often the content is viewed or downloaded. In addition
to tracking, content deliveries provide several benefits over sending files as attachments, such as giving you control over how
long the delivery is available to viewers and whether a viewer can download a file or see it online only. Content deliveries can
be created from the Content Deliveries related list on leads, accounts, contacts, opportunities, cases, campaigns, or custom
objects. Salesforce CRM Content users can also create a content delivery from the content details page or the Related Content
related list.
25
Sales Cloud Content Deliveries—Generally Available
Implementation Tips
• To ensure quality of service, the total number of content-delivery views allowed within a 24-hour period is limited to
10,000. Also, the amount of bandwidth allocated to content deliveries is limited to 1 GB within a 24-hour period. If a
recipient tries to view a delivery when a rate limit has been exceeded, a notification displays that asks the viewer to try again
later. Salesforce.com may be able to increase rate limits on an exception basis. For more information, contact your sales
representative.
• When you create a content delivery, Salesforce.com copies the original file and creates a new version of that file especially
for online viewing. Note the following information concerning supported file types:
- Microsoft® Office 97 through Microsoft Office 2003 Word, Excel, and PowerPoint files are supported for online views
- Adobe® PDF files are supported for online views
- JPG, BMP, GIF, and PNG are supported for online views
- Microsoft Office 2007 Word, Excel, and PowerPoint files are not supported for online views
- Any document over 25 MB is not supported for online views
You can create a content delivery with any file type, but if the file type is not supported for online viewing, your recipient
can only download the document in its original file format.
• Always preview your content delivery before sending the URL to recipients. In some cases, formatting in the original file
such as colors and non-standard fonts may not display properly in the online version. If you are not happy with the quality
of the online version, the content-delivery wizard gives you the option of making your content available for download in
its original file format.
• Content deliveries require Adobe Flash version 9.0.115. If a recipient does not have Flash installed, a download option
displays.
• Customer Portal and partner portal users cannot create content deliveries.
• Only the creator of a content delivery can delete the delivery record or edit details such as the expiration date.
• Each time a content delivery's URL is clicked, Salesforce.com records the click as one view and distinguishes between
internal and external views. An internal view is a view by a Salesforce.com user, for example, clicking the delivery URL on
the delivery detail page or the View option on the Content Deliveries related list is an internal view. The Content Deliveries
related list provides a count of all views for each delivery. Open the delivery details page to see information about a specific
view.
Note: For password-protected content deliveries, a view is recorded when the recipient clicks on the delivery URL
regardless of whether he or she enters the password and views the delivery.
• To delete a Salesforce CRM Content file that is associated with a content delivery, first delete the content delivery.
• Salesforce CRM Content users can deliver content from shared workspaces or a personal workspace.
Best Practices
• After creating a content delivery, always preview it before sending the URL to your recipients to ensure that the formatting
in the original file displays properly in the online version. For example, colors and non-standard fonts may not display
26
Sales Cloud Content Deliveries—Generally Available
properly in the preview player. If you are not happy with the quality of the online version, click Previous and choose to
make your content available in its original file format or as a PDF file only. Your recipients will be able to download the
file, and you can track whether the file was downloaded on the delivery detail page.
• Animation and timings in PowerPoint files are not supported in the content delivery's online version. Hyperlinks in all
file types are also unsupported. See the implementation tips for a complete list of supported file types.
• Because content-delivery URLs can be sent to leads, customers, or any unauthenticated user, Salesforce recommends
requiring password protection if your users will send confidential documents via content delivery. The options below allow
you to select an organization-wide default for content-delivery password protection.
• If you are a Salesforce CRM Content user and want recipients of your content delivery to always see the latest version of
a file rather than the version available on the delivery-creation date, open the delivery detail page and click Edit. Select
the Content Delivery Opens Latest Version checkbox.
• If you select Notify Me of First View or Download, you will receive an email when the content delivery is viewed
for the first time.
1. Click Setup ➤ Customize ➤ Content Deliveries ➤ Settings and select the Enable content deliveries checkbox.
If you do not have access to the Content Delivery feature, contact Salesforce.com Customer Support to activate it.
2. Choose a default option for content-delivery passwords. If you choose to require a password, users who create a content
delivery receive a password when the delivery is generated; users must send the password and the delivery URL to delivery
recipients. Delivery recipients are prompted for the password when they click the content-delivery URL:
• Password protection is optional and defaults to OFF—If this option is selected, users can choose to require a password
when they create a content delivery, but the Require Password to Access Content field on the create-delivery
wizard is not checked by default.
• Password protection is optional and defaults to ON—If this option is selected, the Require Password to Access
Content field on the create-delivery wizard is checked by default. Users can uncheck the option if they do not want
to require a password.
• Password protection is required—If this option is selected, a password is generated each time a content delivery is
created. Users cannot opt out of the password requirement.
Note: Content-delivery passwords display with the content-delivery URL when the delivery is created. You
can also access the password on the delivery detail page for the life of the content delivery.
When content delivery is enabled, all users should add the Content Deliveries related list to their page layouts for leads,
accounts, contacts, opportunities, cases, campaigns, or custom objects. All Salesforce CRM Content users will see a Deliver
27
Sales Cloud Content Deliveries—Generally Available
Content option on each content details page. For detailed instructions on creating a content delivery, see “Creating Content
Deliveries” in the Salesforce.com online help.
1. From the Content Deliveries related list, Related Content related list, or the content details page, click Deliver Content.
2. Upload a file or confirm the file name. If you are a Salesforce CRM Content user, search for the content in your workspaces
that you want to deliver. Salesforce CRM Content users can search for content in shared workspaces or a personal workspace.
3. Optionally, modify the Delivery Name field. This is the name that identifies your content delivery in Salesforce.com.
We recommend using a name that will make the delivery easily distinguishable from other deliveries on the same record.
The default delivery name includes the file name and today’s date.
4. Select the delivery methods that determine how your content can be viewed. The options that appear depend on the file
format you uploaded.
• Choose Allow Recipient to View in the Browser to create an online version of the file that recipients can
view in their browser.
• Choose Allow Recipient to Download as [file type] file to allow the recipient of your content delivery
to view the content in its original format. For example, if you uploaded a Microsoft® Word file, this field will be Allow
download as .doc file.
• Choose Allow Recipient to Download as PDF to create a .pdf version of the file. This option is only available
for Microsoft® PowerPoint, Word, and Excel files.
5. Select Notify Me of First View or Download if you want to receive an email the first time your recipient clicks
the content-delivery URL.
6. If the content you are delivering is time-sensitive, select the Remove Access to Content on checkbox and enter an
expiration date. By default, the expiration date is 90 days from the current date. After creating your content delivery, you
can change the expiration date at any time on the delivery detail page.
7. Optionally, select Require a Password to Access Content. When you create the content delivery you will receive
a password to include with the delivery URL that you send to your recipients. The password is available for the life of the
delivery on the delivery detail page.
8. Optionally, use the lookup to associate your content delivery with a Salesforce.com record. The record you were viewing
when you clicked Deliver Content is selected by default.
9. Click Save & Next. Your delivery will usually be ready within a few moments, but you can click Notify Me to exit the
content delivery wizard and be notified via email when your content delivery is ready.
10. If you did not exit the content delivery wizard, click Preview to verify that you are satisfied with the delivery.
Important: Formatting in the original file may not display correctly in the online version. If you chose Allow
Recipient to View in the Browser, preview your content delivery before sending its URL to your
recipients. If you are not happy with the quality of the online version, click Previous and choose to make your
content available in its original file format or a PDF only.
11. Copy and paste the delivery URL and, if applicable, its password into an email or instant message for delivery. The URL
is available on the delivery detail page. For more information, see “Viewing and Editing Content Deliveries” in the
Salesforce.com online help.
28
Sales Cloud Content Deliveries—Generally Available
On the Content Deliveries related list or the Content Deliveries list page, click the name of a content delivery to open the
detail page.
Viewing Content Delivery Details
The delivery detail page provides all the information associated with a content delivery, including the URL required to
access the content delivery, the number of times the delivery has been viewed, and the delivery settings. For a description
of each field, see “Content Delivery Fields” in the Salesforce.com online help.
29
Sales Cloud Content Deliveries—Generally Available
Field Description
Allow Recipient to Download as PDF If checked, the content delivery converts Microsoft® Word,
Excel, and PowerPoint files into PDF files and gives the
recipient the option of downloading the PDF. If the file you
uploaded was not a PDF, Word, Excel, or PowerPoint file,
this option does not appear in the create-delivery wizard. On
the delivery details page, this field is labeled Allow
Download as PDF.
Allow Download in Original Format If checked, the content delivery allows recipients to download
the original file. In the create-delivery wizard, this field is
called Allow Recipient to Download as [file
type] where [file type] is the original file's file type, such
as .ppt, .pdf, or .doc.
Author For Salesforce CRM Content files, the user who published
the file. (Read only)
Content Delivery Name The name assigned to the content delivery. By default, the
Content Delivery Name includes the file name and the
creation date.
Content Delivery Opens Latest Version For Salesforce CRM Content files, this flag indicates that the
recipient of a content delivery sees the most current version
of a file. For example, if a file is updated between the
delivery-creation date and today's date, a recipient who views
the delivery today sees the newest version.
Content Delivery Expires A flag that indicates whether access to the content delivery
will expire on the expiration date. In the create-delivery wizard,
this flag corresponds to the checkbox next to the Remove
access to content on field.
Created By The user who created the content delivery, including creation
date and time. (Read only)
Description For Salesforce CRM Content files, the description provided
when the file was published. (Read only)
Expiration Date The date on which the content delivery can no longer be
viewed. In the create-delivery wizard, this is the date entered
in the Remove Access to Content on field.
File Downloaded A flag that indicates whether a file in the content delivery was
downloaded. For example, if a content delivery includes
options to view the content in the browser, download the
content in its original file format, and download the content
as a PDF file, this flag is checked if the recipient downloads
the original file or the PDF file. (Read only)
Internal View A flag that indicates whether a Salesforce.com user viewed
the content delivery. A view is considered internal if the user
opens the delivery URL from within Salesforce.com, for
30
Sales Cloud Salesforce Mobile Enhancements
Field Description
example by clicking View on the Content Deliveries related
list or clicking the delivery URL on the delivery detail page.
If the user copies the URL and pastes it into his or her
browser, the view is considered external. (Read only)
Last Modified By The user who last modified the content delivery, including
modification date and time. (Read only)
Last Viewed The date and time on which the content delivery was last
viewed. A view is one click of the content-delivery URL. (Read
only)
Notify Me of First View or Download If checked, the user who created the content delivery receives
an email notification the first time the content delivery URL
is clicked.
Owner Name The user who owns the content delivery. (Read only)
Related To The record that the content delivery is associated with, such
as an account, opportunity, or custom object. Users with
sharing access to the record can click it to view more details.
Require Password to Access Content If checked, the recipient must enter the provided password
before viewing the content delivery. The password appears
when the content delivery is generated and for the life of the
delivery on the delivery detail page.
Title For Salesforce CRM Content files, the title of the file included
in the content delivery. (Read only)
View Count Total number of views for the content delivery, including
internal and external. (Read only)
31
Sales Cloud Salesforce Mobile Enhancements
With Winter '10, you can take your documents on the go. Preview presentations, sales literature, and other documents in the
mobile application, then send them to colleagues, customers, or prospects. Preview is available for certain document types,
and delivery is available depending on user permissions.
Note: Mobile users must upgrade to the latest version of Salesforce Mobile and have a Salesforce CRM Content
license to use Salesforce CRM Content. To find out how to upgrade the mobile application on a BlackBerry smartphone
or iPhone, refer to the topic titled “Upgrading Salesforce Mobile” in the Salesforce Mobile User Guide for BlackBerry
or the Salesforce Mobile User Guide for iPhone.
Implementation Tips
• Content record information is synchronized to the device; however, the files associated with the content records are not.
This allows users to deliver content from the mobile application even when a file is too large to be downloaded to a mobile
device.
• Users can't search for a specific piece of content in the mobile application. They can only share the content available on
the Content tab, which is automatically synchronized to their device based on the filters in their assigned mobile
configuration.
• Users can't view a list of their subscribed content in the mobile application. They also can't filter the list of records on the
Content tab based on a particular workspace.
• While users can preview and share content from the mobile application, they can't update the file associated with a content
record. If they have the required permissions, they can edit the fields on the content detail page.
• Users must be in wireless coverage to preview and deliver content. Without a wireless connection, they can only view the
content detail page.
• Content is only supported by the BlackBerry and iPhone mobile client applications.
• Content is not available in Mobile Lite, which is the free version of the mobile application.
• You can't block mobile permissions for the content object. Currently, the content object in the mobile application is
read-only.
• You can't edit the mobile page layout for the content object. The content detail page in the mobile application is hard-coded
to display only a few fields.
32
Sales Cloud Salesforce Mobile Enhancements
You can set up the mobile application so that your users are able to share content with customers and colleagues directly from
their mobile devices. When you mobilize the content object in your organization's mobile configurations, the Content tab
appears in the mobile application.
To set up Content for the mobile application:
1. Click Setup ➤ Mobile Administration ➤ Mobile Configurations, and then click the name of a mobile configuration.
2. In the Data Sets related list, click Edit.
3. Click Add....
4. In the popup window, select Content, then click OK.
5. Use field filters to specify which content records are synchronized.
Because users can't search for content in the mobile application, it's essential to set up filters that make important content
available on the device. You can't create filters based on workspaces or subscriptions, but here are a few options for setting
up useful filter conditions:
• Date: Filter on the Last Modified Date, Content Modified Date, or Created Date fields. Use special date
values like LAST 90 DAYS or LAST 180 DAYS to ensure that recently updated content records are synchronized.
• Owner: Filter on the author if certain people in your organization are responsible for publishing content.
• File Type: Filter on certain types of documents. For example, your sales team might generally be interested in
presentations or PDF documents.
• Custom Fields: If you created custom content fields that help you categorize your content, filter on the custom fields.
For example, if you built a Functional Use field with picklist values, you could set up a filter condition where
Functional Use equals Sales.
6. Optionally prevent content records from consuming all the memory on a mobile device by selecting the second radio button
under Set Max Record Limit and entering the maximum number of content records this configuration can transfer to
mobile devices. Use the Order By and Sort drop-down lists to specify which records are synchronized if the data size limit
is exceeded.
7. Click Done when you're finished.
8. Optionally modify other mobile configurations and mobilize the content object.
33
Sales Cloud Salesforce Mobile Enhancements
you need a content record that isn't synchronized to your device, contact your Salesforce.com administrator and request an
adjustment to your mobile configuration.
Previewing Content
You can preview content before delivering it, but your device must have a wireless connection. To preview content:
iPhone
• For PowerPoint files, the preview page displays a viewer that lets you navigate between the slides in the presentation.
• For other file types, the preview page displays the first page of the content.
• Some file types, like .exe files, can't be previewed.
2. If the preview displays only the first page of content, tap Open to view it in Safari. Safari can display many file types,
such as .pdf, .doc, .xls, and .ppt.
3. Tap Done when you're finished previewing the content, or tap Send to deliver the content.
BlackBerry
1. Open a content record, then select Preview Content from the menu.
2. Open the menu and click Preview Content.
The preview page opens in a temporary tab called Preview Content.
• For PowerPoint files, the preview page displays a viewer that lets you navigate between the slides in the presentation.
• For other file types, the preview page displays the first page of the content.
• Some file types, like .exe files, can't be previewed.
3. Open the menu and click Close Browser when you're finished previewing the content, or click the Send button to
deliver the content.
Delivering Content
Creating a content delivery in the mobile application sends the content's encrypted URL to any recipient, such as leads,
customers, partners, and colleagues. To deliver content:
iPhone
34
Sales Cloud Salesforce Mobile Enhancements
BlackBerry
1. Open a content record, then select Preview Content from the menu.
The preview page opens in a temporary tab called Preview Content.
2. Click the Send button.
3. Click Send Email.
4. Open the menu and click Add To:.
5. Select a recipient:
6. Optionally add carbon copy email addresses by opening the menu and selecting Add Cc: or Add Bcc:.
Your email address is automatically added to the Cc field when you create the content delivery.
7. Optionally personalize the subject and body of the message. Don't edit the delivery URL.
8. Open the menu and click Send.
9. Open the menu and click Close Browser to close the preview page and return to the Content tab.
Winter '10 provides support for the notes object in Salesforce Mobile. After administrators set up their mobile configurations
to include the notes object, users can access the Notes related list in the mobile application.
Note: Mobile users don't need to upgrade to the latest version of the client application to use the Notes feature. After
you enable notes in your organization's mobile configurations, the Notes related list is available to users the next time
the device synchronizes with Salesforce.com.
35
Sales Cloud Salesforce Mobile Enhancements
1. Click Setup ➤ Mobile Administration ➤ Mobile Configurations, and then click the name of a mobile configuration.
2. In the Data Sets related list, click Edit.
3. In the data tree, click the name of a parent data set. Only certain objects can have a Notes related list, such as accounts,
contacts, and opportunities.
4. Click Add... to add a child data set.
5. In the popup window, select Note, then click OK.
6. Continue adding notes as a child data set until you're finished.
7. Click Done.
• To access the Notes related list, open a record, scroll to the bottom of the detail page, then tap Notes in the Related Lists
section.
• To view the contents of a note, tap the name of the note.
• To create a note, open the Notes related list, then tap +. Specify a description of the note and its contents, then tap Save.
• To edit a note, open it, then tap Edit. Make the changes you want, then tap Save.
• To delete a note, open it, tap Delete, then tap Delete again to confirm.
• To clone a note, open it, then tap Clone. Make the changes you want, then tap Save.
• To reassign a note, open it, then tap Change Owner. Select another user, then tap Save.
• To access the Notes related list, open a record, then select Note from the menu. You can also scroll to the bottom of the
detail page and click Note in the Related Lists section.
• To view the contents of a note, click the name of the note.
• To edit a note, open it or highlight it in the Notes related list, then select Edit from the menu. Make the changes you
want, then select Save from the menu.
• To create a note, open the Notes related list, then select New from the menu. Specify a description of the note and its
contents, then select Save from the menu.
• To access the Notes related list, open a record, then select Actions ➤ Related To ➤ Note. You can also scroll to the
bottom of the detail page and select Note in the Related Items section.
• To view the contents of a note, select the note's name.
• To edit a note, open it or highlight it in the Notes related list, then select Actions ➤ Edit. Make the changes you want,
then select Save.
• To create a note, open the Notes related list, then select Actions ➤ New. Specify a description of the note and its contents,
then select Save.
36
Sales Cloud Additional Sales Cloud Enhancements
SSL Connection
With Winter '10, Salesforce Mobile uses Secure Sockets Layer (SSL), the well-known industry standard protocol, to initiate
a secure connection to the mobile server. While the previous mechanism used government-class security, it was proprietary.
SSL is a proven and widely accepted protocol.
Note: If your organization uses a BlackBerry Enterprise Server, your BlackBerry administrator might need to open
port 443.
To allow Salesforce.com email services to accept large email messages, you can now configure email services to truncate
email body text, body HTML, and text attachments to 100,000 characters (approximate). See “Defining Email Services”
in the Salesforce.com online help.
When Salesforce.com email services cannot process an incoming email message, you can now send the resulting error
email message to a chosen address instead of notifying the sender. See “Defining Email Services” in the Salesforce.com
online help.
Salesforce.com now supports Transport Layer Security (TLS) options for outbound email messages to chosen domains.
See “Configuring Deliverability Settings” in the Salesforce.com online help.
37
Sales Cloud Additional Sales Cloud Enhancements
You can now choose whether you want Salesforce.com to notify senders when mass emails complete. See “Configuring
Deliverability Settings” in the Salesforce.com online help.
38
SERVICE CLOUD
With Winter '10, you can use the High-Volume Customer Portal User user license to add significantly more users to a
Customer Portal. After you purchase High-Volume Customer Portal User user licenses, you can assign them to portal-enabled
contacts so that large numbers of users can log in to a Customer Portal without affecting its performance.
Implementation Tips
• You must purchase High-Volume Customer Portal User user licenses before you can assign them to portal users.
• To view the user licenses in your organization, click Setup ➤ Company Profile ➤ Company Information.
• Contact salesforce.com for information about how many high-volume Customer Portal users you can activate for a Customer
Portal.
• You can only enable contacts as high-volume Customer Portal users via the API. See the Force.com Web Services API
Developer's Guide.
• You can't assign the High-Volume Customer Portal User user license to person accounts.
• Review the details of Customer Portal user licenses before assigning them to users. The following table shows the Customer
Portal user licenses with their associated profiles and positions in the Customer Portal role hierarchy:
Customer Portal Manager Standard Customer Portal User profile or a Can only assign to the User role.
profile cloned and customized from the
Can only view and edit data they
Customer Portal User profile
directly own and can view and edit cases
- Can access custom objects where they are listed in the Contact
depending on profile settings. Name field.
- Can access Salesforce CRM
Content depending on feature
license and profile settings. See
39
Service Cloud High-Volume Customer Portal Users
Customer Portal Manager Custom Customer Portal Manager profile or a Can assign to either the Executive,
profile cloned and customized from the Manager, or User role.
Customer Portal Manager profile
Can view and edit data they directly
- Can access custom objects own or data owned by or shared with
depending on profile settings. users below them in the Customer
- Can access reports depending on Portal role hierarchy; and they can view
profile settings. and edit cases where they are listed in
- Can access Salesforce CRM the Contact Name field.
Content depending on feature
license and profile settings. See Can have data shared to them just like
“Enabling Salesforce CRM Content other Salesforce.com users.
in the Customer Portal” in the
Salesforce.com online help.
- Can receive the “Portal Super User”
and “Delegated Portal User
Administrator” permissions.
- The settings on the Customer Portal
Manager and Customer Portal User
profiles are similar. However, users
associated with the Customer Portal
Manager profile can be assigned
greater access to data via the
Customer Portal role hierarchy and
sharing rules.
Best Practices
• Add Salesforce.com users to the High-Volume Customer Portal Users share group to grant them access to records owned
by high-volume Customer Portal users. See “Sharing Records Owned by High-Volume Customer Portal Users to
Salesforce.com Users” in the Salesforce.com online help.
• Don't assign the High-Volume Customer Portal User user license to Customer Portal users who you want in:
- Personal groups or public groups
- Sharing rules
- Account teams, sales teams, or case teams
- Salesforce CRM Content workspaces
40
Service Cloud High-Volume Customer Portal Users
High-volume Customer Portal users are limited-access portal users intended for organizations with many thousands to millions
of portal users. Unlike other portal users, high-volume Customer Portal users don't have roles, which eliminates performance
issues associated with role hierarchy calculations. Specifically, high-volume Customer Portal users:
- The records are associated with the high-volume Customer Portal user's account or contact
- The high-volume Customer Portal user has read only or read/write access to an object's records
• Only share the records they own with Salesforce.com users in the High-Volume Customer Portal Users share group. See
“Sharing Records Owned by High-Volume Customer Portal Users to Salesforce.com Users” in the Salesforce.com online
help.
• High-volume Customer Portal users can't manually share records they own or have access to, but they can transfer such
records.
• You can't assign the High-Volume Customer Portal User user license to person accounts.
• High-volume Customer Portal users can't own accounts.
• You can't include high-volume Customer Portal users in:
• You can only enable contacts as high-volume Customer Portal users via the API. See the Force.com Web Services API
Developer's Guide.
41
Service Cloud High-Volume Customer Portal Users
Note:
• Objects with Set Up in the Action column have not been customized for high-volume Customer Portal user
access. Until you configure them, their access is determined by organization-wide sharing defaults.
• Custom objects only display if the Available for Customer Portal field is selected. See “Managing
Custom Objects” in the Salesforce.com online help.
• To grant access to all high-volume Customer Portal users on an account, select All high-volume Customer
Portal users whose account matches and then select a field. For example, choose this option if you want all
high-volume Customer Portal users in an account to access all of the cases for their account.
• To grant access to an individual contact as a high-volume Customer Portal user, select Only the high-volume
Customer Portal user who matches and then select a field. For example, choose this option if you want
individual high-volume Customer Portal users to only access cases associated with their contact.
• To prohibit access to all high-volume Customer Portal users, select Don't grant access to high-volume
Customer Portal users.
High-volume Customer Portal users are limited-access portal users intended for organizations with many thousands to millions
of portal users. Unlike other portal users, high-volume Customer Portal users don't have roles, which eliminates performance
issues associated with role hierarchy calculations. Because high-volume Customer Portal users are not in the role hierarchy
while Salesforce.com users are, a share group allows you to specify the Salesforce.com users who can access records owned by
high-volume Customer Portal users. Each Customer Portal has its own share group.
To specify the Salesforce.com users who can access records owned by high-volume Customer Portal users:
42
Service Cloud Additional Service Cloud Enhancements
Note: Deactivating a share group removes all Salesforce.com users' access to records owned by high-volume
Customer Portal users.
a. From the Search drop-down list, select the type of member to add.
b. If you don't see the member you want to add, enter keywords in the search box and click Find.
c. Select members from the Available Members box, and click Add to add them to the group.
d. Click Save.
Users with “Modify All Cases” or “Transfer Cases” Can Create and Assign Cases Via the API and Apex
Users no longer need the “Modify All Data” permission to simultaneously create and assign cases to other users via the
API and Apex. Now, users with “Modify All Cases” or “Transfer Cases” can also create and assign cases via the API
and Apex.
An auto-response rule is a set of conditions for sending automatic email responses to case or lead submissions based on the
attributes of the submitted record. Previously, auto-response rules for cases only applied to cases submitted through a Self-Service
portal, a Web-to-Case form, an Email-to-Case message, or an On-Demand Email-to-Case message. With Winter '10, users
with the “Customize Application” permission now have the option to use auto-response rules instead of workflow alerts for
cases submitted through a Customer Portal.
43
Service Cloud Additional Service Cloud Enhancements
Auto-response rules provide functionality similar to workflow alerts. The following table lists some of the differences between
workflow alerts and auto-response rules to help you determine which process to use:
Type of Process Designed For Runs When Sends Email To Number of Emails
Sent
Workflow alerts Notifications to A case or lead is created Anyone you choose who Sends as many emails as
interested parties. or edited. is associated to the Case there are matching
or Lead object. criteria in the workflow.
Auto-response rules Initial response to the A case or lead is Contact on a case or the Sends one email based
contact who created a created. person who submitted on the first rule entry
case or the person who the lead on the Web. criteria it matches in a
submitted the lead on sequence of rule entries.
the Web.
For more information, see “Creating Auto-Response Rules” in the Salesforce.com online help.
Lead Assignment Rules available in: Group, Professional, Enterprise, Unlimited, and Developer Editions
Case Assignment Rules available in: Professional, Enterprise, Unlimited, and Developer Editions
Assignment Rules Work Properly with Apex Trigger that Update Cases or Leads During the Save Process
Assignment rules now work properly when cases or leads are created with the Assign using active assignment rules
checkbox selected, and during the save process, an Apex trigger updates the case or lead.
44
Service Cloud Additional Service Cloud Enhancements
Solution Enhancements
Community Enhancements
45
CUSTOM CLOUD
Analytics Enhancements
Available in: All Editions
Winter '10 includes many new features that improve the capabilities of Salesforce.com analytics:
You asked for it! This enhancement is an idea from the IdeaExchange.
In previous releases, though you had multiple calculated summary values in a report, you couldn't show more than one in a
chart. If your report contained both projected and actual sales, you couldn't show a comparison of those values in a single
chart. With Winter '10, you can create combination charts. A combination chart plots multiple sets of data on a single chart.
Each set of data is based on a different field, so values are easy to compare. You can also combine certain chart types to present
data in different ways in a single chart. For example, add quota to closed business, add quantity to closed amount, add lead
count to campaign cost.
With combination charts, you can:
• Add a line to an existing line, vertical column, grouped vertical column, or stacked vertical column chart
• Add a cumulative line to an existing line cumulative chart
• Add up to three columns to a vertical column chart
• Add up to three bars to a horizontal bar chart
46
Custom Cloud Analytics Enhancements
1. Go to the Select Chart & Highlights step of the report wizard for any summary or matrix report.
2. Choose a chart type that allows combination charts:
• Horizontal Bar
• Vertical Column
• Vertical Column - Grouped
• Vertical Column - Stacked
• Line
• Line Cumulative
3. Select the Combination Chart checkbox to plot additional values on the chart. The chart preview updates as you configure
your combination chart.
4. Select from the Display as drop-down list to add a line, cumulative line, columns, or bars to your chart. Available
options differ based on your chart type.
• For columns or bars, click Add another set to add up to three sets.
• When adding a line to a vertical column chart, select Use a Second Axis to show a separate axis for the added line on
the right side of the column chart. A separate axis can be useful when the two values have different ranges or units.
Note: Selecting Use a Second Axis makes more values available in the Values drop-down list. Without this
option, you can only pick from values of the same type as the primary Y-axis—for example, number, currency,
or percentage. This option is only available for certain combination charts.
5. Use the Values drop-down list to specify each additional value to plot on the chart.
6. Once you've set up your report, click Run Report or Save.
47
Custom Cloud Analytics Enhancements
Line-on-Column
Add a line to a column chart to show two chart types together. Using a second axis allows you to add different types of
values to the chart.
To create the chart in this example, choose the Vertical Column chart type, set the opportunity sum of amount as the
Y-Axis, fiscal year as the X-Axis, and use the Combination Chart option to add the number of deals as a line. Summary
values of different types won't be available in the Values drop-down list unless you select Use a Second Axis.
You can see both the total amount and number of deals for each year on a single chart.
Line-on-Line
Add a line to a line chart to compare two continuous summary values.
To create the chart in this example, set up a custom summary formula to calculate a three-week moving average of
opportunity amounts, then choose the Line chart type, set the opportunity sum of amount as the Y-Axis, date as the
X-Axis, and use the Combination Chart option to add the calculated three-week moving average as a line.
You can compare sales against the moving average over time.
48
Custom Cloud Analytics Enhancements
(OppProductTrends__c.Amount__c:SUM+ PREVGROUPVAL(OppProductTrends__c.Amount__c:SUM,
OppProductTrends__c.as_of_date__c) + PREVGROUPVAL(OppProductTrends__c.Amount__c:SUM,
OppProductTrends__c.as_of_date__c,2))/3
You asked for it! This enhancement is an idea from the IdeaExchange.
In previous releases, when users clicked a dashboard, they were taken to the source report or to a URL that you specified.
With Winter '10, you can also allow users to click individual groups, axis values, or legend entries of a dashboard to view the
source report filtered by what they clicked. For example, if users click a wedge of a pie chart, they are taken to the source report
filtered to show values for just that wedge.
To allow users to drill-down to the filtered report based on what they clicked in a dashboard component:
49
Custom Cloud Analytics Enhancements
5. Set Custom Report to the source report to use for the dashboard component.
6. Click Save.
You asked for it! This enhancement is an idea from the IdeaExchange.
With Winter '10, you can allow users to view the details of charts in reports and dashboards by hovering over values. Hovering
over points on a line or individual bars or columns shows the label and value; hovering over wedges or segments in pie, donut,
and funnel charts shows the label, value, and percentage. Hover details depend on chart type.
To enable hover for the chart in a report:
1. Go to the Select Chart & Highlights step of the report wizard for any summary or matrix report.
2. Select a chart type.
3. Under Chart Presentation, select Show Details on Hover. This option is available for all chart types.
4. Once you've set up your report, click Run Report or Save.
50
Custom Cloud Analytics Enhancements
You asked for it! This enhancement is an idea from the IdeaExchange.
In previous releases, for pie, donut, and funnel charts, all small group values were automatically combined into a single group
called “Others.” With Winter '10, you can choose to turn this feature on or off by setting an option for the chart.
To set the grouping of small values:
1. Go to the Select Chart & Highlights step of the report wizard for any summary or matrix report.
2. Set the Chart Type to Pie, Donut, or Funnel.
3. Under Chart Presentation, select Combine Small Groups into “Others” to combine all groups less than or equal to 3%
of the total into a single “Others” wedge or segment. Deselect it to show all values individually on the chart.
4. Once you've set up your report, click Run Report or Save.
In previous releases, you had to configure chart settings for both the source report and the dashboard using that report. With
Winter '10, you can use the chart that you defined in the source report for the dashboard component. If you defined a
combination chart in the source report, select this option to use that combination chart on the dashboard.
To use the chart from the report in your dashboard component:
51
Custom Cloud Analytics Enhancements
5. Select the Use Chart as Defined in Source Report checkbox. Dashboard chart settings are hidden and the chart settings
in the source report determine how the chart displays in the dashboard.
6. Click Save.
You asked for it! This enhancement is an idea from the IdeaExchange.
With Winter '10, you can assign fixed colors to picklist values when shown in charts. Charts based on those picklists will
always show the same color for particular picklist values in all charts in reports and dashboards across your organization. For
example, if your team creates the same chart for every month, you can make sure that the groupings are always shown in the
same color.
The following figure shows a dashboard with three charts grouped by opportunity stages. Fixed colors were assigned to the
Stage picklist values so that the “Closed Won” stage is always shown in green and “Closed Lost” in red. Notice that even
though another stage appears on the second chart, the assigned colors remain the same.
1. Navigate to the fields page for your object. For example, for account fields, click Setup ➤ Customize ➤ Accounts ➤
Fields.
For custom objects, click Setup ➤ Create ➤ Objects, then click the name of an object.
2. Click the name of the picklist you want to update.
3. Click Chart Colors and select an option to assign colors to picklist values for use in charts:
• Assign fixed colors to all values assigns a fixed color to each value from the standard set of chart colors. The Chart
Colors column shows the assigned colors. Manually change assigned colors by editing picklist values. For example,
if you want Closed Lost values to always show up as red in charts grouped by Opportunity Stage, assign red to that
picklist value.
• Assign colors to values dynamically assigns colors when a chart is generated. The Chart Colors column shows
“Assigned dynamically” for all colors. Assign fixed colors by editing picklist values. For example, if you only need certain
52
Custom Cloud Lookup Filters—Beta
picklist values to show up as fixed colors in charts, manually assign colors to those values and leave the rest as “Assigned
dynamically.”
Manual assignments are overridden each time you click an option in Chart Colors.
Note: Chart colors aren't available for multi-select picklists, currency picklists, or Task Subject, Event Subject,
and Opportunity Competitor picklists.
Lookup Filters—Beta
Available in: All Editions
Note: This release contains a beta version of lookup filters that is production-quality but has known limitations. The
most significant limitation is the inability to create a dependent lookup filter. That is, you cannot create a lookup filter
that relies on values on the record to restrict the values available in a lookup field. For example, you cannot restrict the
lookup results of the case Contact field based on the case Account field.
Click the IdeaExchange link in the top banner of the lookup filters Edit page to provide feedback and suggestions for
this feature.
After a successful Pilot release in Summer ’09, a beta version of lookup filters is now available to all customers in Winter ‘10.
Lookup filters are administrator settings on lookup, master-detail, and hierarchical relationship fields that restrict the valid
values and lookup dialog results for the field. The restrictions for the field are based on criteria such as a field on the lookup
object or the user's profile. If a user manually types an invalid value in the field when editing a record and clicks Save,
Salesforce.com blocks the save and displays an error message. Administrators can customize the error message.
Lookup filters improve user productivity and ensure data quality. For example, restrict the Account Name lookup field on
opportunities to only allow accounts with a record type of Customer, filtering out Partners and Competitors. Or, if you have
a custom relationship field that references accounts and your organization has numerous inactive accounts, restrict users to
choosing active accounts only.
Each object can have up to five active lookup filters. You can add lookup filters on relationship fields that point to accounts,
contacts, users, and custom objects, with the following exceptions:
53
Custom Cloud Lookup Filters—Beta
Beta Limitations
• Lookup filters cannot restrict the lookup dialog results and valid values based on fields on the source object. For example,
you cannot restrict the lookup results of the case Contact field based on the case Account field.
• You cannot define lookup filters in the custom field wizard. To add a lookup filter to a new custom field, first create the
field, then edit that field to add the filter criteria.
• Lookup filters are available in the Metadata API but are not available in the Force.com IDE.
Best Practices
• Add custom help text to the field to let users know about the business rule that the lookup filter enforces. For example,
Only active accounts can be associated to opportunities.
• Customize the lookup filter error message to guide users who manually enter invalid values. For example, Value does
not exist or is not an active account.
• Use the translation workbench to translate lookup filter custom error messages if your organization uses multiple languages.
• Use Current User Profile: Name in the filter criteria to define different filter criteria for different users, or to give
administrators the ability to enter values that do not match the filter criteria. See “Lookup Filter Examples” in the
Salesforce.com online help.
• Test lookup filters to ensure they are enforcing your business rule without being too restrictive.
• When creating lookup filters, remember that some relationship fields may be read only to users with certain profiles. Make
sure that the lookup filters you create do not prevent such users from editing records that are critical to their job functions.
• Fields in lookup filter criteria that are not required might be blank, so consider whether or not to allow blank values. To
accommodate blank values, use the Advanced Options to define the criteria to include blank values. For example, if you
want the Email Address field on contacts to only include people from your company but you want to allow for the
possibility that the email address is blank, use the following lookup filter criteria:
1. Email contains Acme
2. Email equals
Leave the value empty for the second line in the criteria, and set the advanced filter conditions to 1 OR 2.
Implementation Notes
• Filter criteria can include fields from both the lookup object and objects directly related to the lookup object (one level
only). For example, a lookup filter on a lookup field pointing to contacts can reference fields on:
- Accounts related to the contact via the Account Name relationship field
- Contacts related to the contact via the Reports To relationship field
Each field that a lookup filter reference on the related lookup object counts against the cross-object reference limit of the
lookup object, not the source object. For example, the two unique relationships described above count against the cross-object
reference limit for the Contact object.
• Salesforce.com displays a funnel icon in the Data Type column on the Fields page next to relationship fields that have an
active lookup filter.
• The lookup filters you create in Salesforce.com also appear in the partner portal and Customer Portal.
• Lookup filters are case-sensitive.
• If you create a lookup filter that makes an existing value for that field invalid, the value persists; however, when a user edits
the record, Salesforce.com does not save the user's changes unless the user changes the invalid value.
• If your organization uses person accounts, note the following:
- Lookup filter criteria on Account Name only applies to business accounts; it does not apply to person accounts. For
example, if your lookup filter criteria is Account Name does not contain book, business accounts with "book"
in the name, such as John's Bookstore, are not valid, but person accounts with “book” in the name, such as John Booker,
54
Custom Cloud Lookup Filters—Beta
are still valid values and appear in the lookup dialog for the Account field. If you need to filter on the name for a
person account, use the First Name or Last Name fields instead.
- Use the Is Person Account field in your lookup filter criteria to restrict the valid values of a lookup field to one
type of account (either person accounts or only business accounts). For example, to restrict a lookup to only person
accounts, include the following in your lookup filter criteria: Is Person Account equals True.
- You cannot package lookup filters that reference standard fields that are specific to person accounts, such as the Email
and Title fields.
• Lookup filters function similarly to validation rules when you save a record. That is, actions that cause related records to
save, such as changes to a roll-up summary fields, also trigger the lookup filters on the related record and block the save.
• If you define a lookup filter on the Owner field, that filter is only enforced when the record is created and when the Owner
is changed. It is not enforced when the record is edited.
• Versions 16.0 and higher of the Salesforce.com API support lookup filters. Lookup filters are enforced when you load data
through the API.
• Lookup filters on currency fields do not convert currencies. For example, if your organization uses multiple currencies and
a lookup filter criteria is Expected Revenue greater than 100000, the lookup shows any account record on which the
Expected Revenue field is set to a value greater than 100,000, regardless of the currency.
• You cannot use special date values, such as “Today” or “This Month,” in lookup filter criteria.
• You cannot delete fields that are referenced in an active lookup filter.
• You cannot change the field type of fields referenced by an active lookup filter.
• If you configure a lookup filter to show inactive users only, the relationship field has no valid options because inactive users
are never valid for relationship fields that point to the User object.
• Define lookup filters on lookup, master-detail, and hierarchical relationship fields, such as the standard Manager field on
the User object.
• Disable lookup filters that you currently do not want to use but might need again in the future.
• Delete lookup filters that you never want to use again.
2. Click Edit next to the name of the lookup or master-detail relationship field to which you want to apply the filter.
55
Custom Cloud Lookup Filters—Beta
3. In the Lookup Filter Options section, select Use filter criteria to limit valid records for this field.
4. Specify the filter criteria a record must meet to be a valid value for this field. To specify fields in the filter criteria, click the
lookup icon or type in the Field column. If you type in the Field column, Salesforce.com searches the list of available fields
and lists fields that match.
Note: The Field column only allows fields that are on one of the following:
• The lookup object (the object to which the lookup field points)
• A parent object of the lookup object
• The current user's record
• The current user's profile
• The current user's role
5. To specify advanced filter conditions, click the Advanced Options link. See “Working with Advanced Filter Conditions”
in the Salesforce.com online help for more information.
6. Specify whether you want Salesforce.com to display the standard error message or a custom message if a user enters an
invalid value. If you choose to display a custom error message, enter the message in the text field below that option.
7. Click Save.
Important: When creating a lookup filter on a master-detail relationship field, verify that the current values of the
field on all of the detail records meet the criteria you specify. If you specify criteria that an existing value does not
meet, Salesforce.com prevents the user from saving changes to the detail record. If this occurs, the user must first
modify the value on the master record to meet the criteria. For example, consider a custom object with a master-detail
relationship field that points to accounts. If you define a lookup filter that excludes all accounts with a Create Date
less than 01/01/2009, verify that no existing records of that custom object have a master-detail relationship with any
account created before 2009. A quick way to do this is to create a report that shows all accounts with a Create Date
less than 01/01/2009.
56
Custom Cloud Lookup Filters—Beta
Filter Criteria
1. Account Record Type equals Customer Account
Custom Error Message Account does not exist or is not a customer account. Click the
lookup icon to select a valid account.
Filter Criteria
1. Status equals Open
Custom Error Message Position does not exist or is not an open position. Click the
lookup icon to select a valid position.
Filtering on Profiles
When a business rule does not apply to users with every profile, use the Current User Profile global variable fields to
define lookup filters that only affect users with a particular profile. For example, you can restrict users with a “Domestic Sales”
profile to only creating or editing cases associated with accounts that have a billing country of “USA” while allowing other
users to associate cases with any account. To do this, define the following lookup filter on the Case object Account Name
field:
Filter Criteria
1. Current User Profile: Name equals Domestic Sales
2. Billing Country equals USA
3. Current User Profile: Name not equal to Domestic
Sales
57
Custom Cloud Lookup Filters—Beta
Custom Error Message Account does not exist or the account billing country is not
USA. Domestic sales reps can only create cases for accounts
in the United States. Click the lookup icon to select a valid
account.
You can modify the above example to simultaneously restrict users with a “Global Sales” custom profile to only associating
cases to accounts with a non-US billing country:
Filter Criteria
1. Current User Profile: Name equals Global Sales
2. Billing Country does not equal USA
3. Current User Profile: Name equals Domestic Sales
4. Billing Country equals USA
5. Current User Profile: Name not equal to Global
Sales, Domestic Sales
Custom Error Message Account does not exist or the account billing country is not
in your sales area. Sales reps can only create cases for accounts
in their sales area. Click the lookup icon to select a valid
account.
Filtering on Roles
When a business rule does not apply to users in every role, use the Current User Role global variable fields to define
lookup filters that only affect users with particular roles. For example, in a recruiting application that has a Position object
with a lookup field to a Compensation Package object, you can restrict users from editing or creating positions that have an
executive compensation plan unless they are executive administrators or vice presidents. To do this, define the following lookup
filter on the Position object Compensation Package Name field:
Filter Criteria
1. Current User Role: Name does not start with VP
2. Current User Role: Name does not equal Executive
Administrator
3. Plan Type does not equal Executive
4. Current User Role: Name does start with VP
5. Current User Role: Name equals Executive Administrator
Custom Error Message The compensation plan does not exist, or you have selected
an executive compensation plan but do not have access to
create executive positions. Click the lookup icon to select a
valid compensation plan.
58
Custom Cloud Enhanced Profile Management
You asked for it! This enhancement is an idea from the IdeaExchange.
In Winter '10, enhanced list views are available for profiles. Administrators can create lists of profiles and use them to compare
profile settings, print lists of profiles, and make mass updates across multiple profiles. Enhanced profile management reduces
administrative overhead and saves configuration time, while increasing the visibility and granular control that administrators
have with profiles.
Enhanced profile management is useful in the following types of situations:
• A help desk manager is concerned that some profiles with “Modify All Data” allow too much access to users who don’t
need it. The manager can create a list of all profiles where “Modify All Data” is enabled, then select specific profiles in the
list, and disable “Modify All Data” in the selected profiles.
• An organization administrator recently created a custom object permission and wants to revoke it from all profiles except
the ones that the object was intended for. The administrator can create a list of all profiles where the permission is enabled,
then select specific profiles in the list, and disable the permission in the selected profiles.
• An information security officer wants to audit and print a collection of permission grants for compliance purposes. The
officer can create and print one or more lists that display specific permissions for all profiles.
To enable enhanced profile management for your organization, click Setup ➤ Customize ➤ User Interface, then select
Enable Enhanced Profile Management.
Note: The Metadata API doesn't support configurations for profile list views.
59
Custom Cloud Enhanced Profile Management
To view the profiles in your organization, click Setup ➤ Manage Users ➤ Profiles.
60
Custom Cloud Enhanced Profile Management
If enhanced profile management is enabled for your organization, you can create profile list views to show a set of profiles with
the fields you choose. For example, you could create a list view of all profiles in which “Modify All Data” is enabled.
a. Type a setting name, or click the lookup icon to search for and select the setting you want.
b. Choose a filter operator.
c. Enter the value that you want to match.
d. To specify another filter condition, click Add. You can specify up to 25 filter condition rows.
Note: To remove a filter condition row and clear its values, click the remove row icon .
4. Under Select Columns to Display, specify the profile settings that you want to appear as columns in the list view.
a. From the Search drop-down list, select the type of setting you want to search for.
b. Enter part or all of a word in the setting you want to add and click Find.
Note: If the search finds more than 500 values, no results appear. Use the preceding steps to refine your search
criteria and show fewer results.
c. To add or remove columns, select one or more column names and click the Add or Remove arrow.
d. Use the Top, Up, Down, and Bottom arrows to arrange the columns in the sequence you want.
Note: You can add up to 15 columns in a single list view.
5. Click Save.
61
Custom Cloud Enhanced Profile Management
2. Click Edit.
3. Edit the fields as described in the procedure for creating a list view.
4. Click Save. To clone an existing view, rename the list view and click Save As.
If enhanced profile management is enabled for your organization, you can change permissions in up to 200 profiles directly
from the list view, without accessing individual profile pages. Editable fields display a pencil icon ( ) when you hover over
the field, while non-editable fields display a lock icon ( ). In some cases, such as in standard profiles, the pencil icon appears
but the setting is not actually editable.
Caution: Use care when editing profiles with this method. Because profiles affect a user's fundamental access, making
mass changes may have a widespread effect on users in your organization.
1. Select or create a list view that includes the profiles and permissions you want to edit.
2. To edit multiple profiles, select the checkbox next to each profile you want to edit. If you select profiles on multiple pages,
Salesforce.com remembers which profiles are selected.
3. Double-click the permission you want to edit. For multiple profiles, double-click the permission in any of the selected
profiles.
4. In the dialog box that appears, enable or disable the permission. In some cases, changing a permission may also change
other permissions. For example, if “Manage Cases” and “Transfer Cases” are enabled in a profile and you disable “Transfer
Cases,” then “Manage Cases” is also disabled. In this case, the dialog box lists the affected permissions.
5. To change multiple profiles, select All n selected records (where n is the number of profiles you selected).
6. Click Save.
Note:
• For standard profiles, inline editing is available only for the “Single Sign-On” and “Affected By Divisions”
permissions.
• If you edit multiple profiles, only those profiles that support the permission you are changing will change. For
example, if you use inline editing to add “Modify All Data” to multiple profiles and one profile is a platform profile
(which doesn't have “Modify All Data”) the platform profile won't change.
If any errors occur, an error message appears, listing each profile in error and a description of the error. Click the profile name
to open the profile detail page. The profiles you've clicked appear in the error window in gray, strike-through text.
Note: To view the error console, pop-up blockers must be disabled for the Salesforce.com domain. To check if your
browser allows pop-up windows, click Setup ➤ My Personal Information ➤ Reminders, and then click Preview
Reminder Alert.
62
Custom Cloud Process Visualizer—Generally Available
To review your changes in the setup audit trail, select Setup ➤ Security Controls ➤ View Setup Audit Trail.
You asked for it! This enhancement is an idea from the IdeaExchange.
With Winter '10, the Process Visualizer for approval processes is now generally available. The Process Visualizer also includes
these enhancements:
Printable View
Print an annotated diagram of your approval process using the new Printable View.
Zoom
Zoom in and out of the approval process diagram to view large, complex processes easily.
Navigation Pane
Use the new navigator to quickly view different areas of a large approval process diagram.
63
Custom Cloud Process Visualizer—Generally Available
• Enable or download the Adobe Flash Player plugin, version 9.0.115 or later, in your browser
• Have at least one approval process defined in your organization
Each approval process diagram is for viewing purposes only. You cannot update an approval process from the Process Visualizer.
After saving your changes to the approval process, click View Diagram to view the updates or, if the Process Visualizer window
is still open, click Refresh.
64
Custom Cloud Process Visualizer—Generally Available
1. The main area contains the approval process diagram, helping you visualize the overall flow, rules, actions, and dependencies.
The diagram's orientation is top-to-bottom, left-to-right. The entry criteria for the approval process are shown at the top
of the diagram. Record processing moves down the flowchart until the final approval or rejection. Each flowchart component
uses a shape, an icon, or both to represent the type of processing that may happen.
2. The diagram's legend summarizes the icons. When you first use the Process Visualizer, the legend is hidden. To display
the legend, click Show Legend. When you subsequently open other diagrams, the Process Visualizer remembers your last
setting (shown or hidden).
3. The banner has a find box so you can find matching text within the approval diagram. Use the Previous and Next buttons
to scroll through your matches.
4. Next to the diagram is an informational sidebar. The top pane in the sidebar presents the Approval Process Properties,
which is collapsed by default. The Approval Process Properties pane lists information such as the name of the approval
and whether it has been activated. Expand the pane by clicking the arrow icon.
5. The bottom pane of the sidebar contains the hover details, which lists information about the currently selected component
on the diagram. You can hover over or click a component to view its details.
6. In the lower right of the diagram pane is a navigator window. Drag the pane within the navigator to view different parts
of the diagram.
7. In the upper left of the diagram pane is a zoom slider. Use it to zoom in and out of your process diagram.
8. In the left side of the banner, use the buttons to get a printable view of the diagram, to refresh the diagram, or to hide or
show the legend and navigator.
65
Custom Cloud Process Visualizer—Generally Available
Property Description
Process Name A user-defined name of the approval process.
Entry Criteria? Appears only when there are no entry criteria for the process,
displaying with a “No” value.
Active? Indicates whether the approval process is active.
Description The description of the approval process.
Record Editability Shows the defined value for this property. For example:
Administrator or current approver.
Next Automated Approver Determined By Shows the value for this property. For example: Manager of
Owner
Approval Assignment Email Template The name of the template used for email alerts. For example:
Leads: New assignment notification (SAMPLE)
Initial Submitters Shows the defined value for this property. For example: Record
Owner
Allow Submitters to Recall Approval Requests? Shows the defined value, Yes or No, for this property.
Created By The name of the person who created the approval process.
Modified By The name of the last person to modify the approval process.
66
Custom Cloud Process Visualizer—Generally Available
Use the find filters to limit results to a specific parameter: Approval Steps, Tasks, Email Alerts, Field Updates, and Outbound
Messages. Click the arrow next to the Find field to select a filter. For example, to find all tasks for Jane Smith, click the
arrow next to the Find field, select Tasks, then enter Jane Smith.
Note: All is the only filter that includes Approval Process Properties, Entry Criteria, and Go Back steps in its search
parameters. If you select a filter but don't enter any text, all instances of that filter item are highlighted in the diagram
and navigation pane.
67
Custom Cloud Process Visualizer—Generally Available
The rectangle labeled Initial Submission Actions represents any actions you defined
in initial submission. At a minimum, this element shows the record lock set automatically
by Salesforce.com to prevent updates by other users. Later during the approval process, after
the record is approved, rejected, or recalled, the record is unlocked.
A diamond with Yes or No branches represents the numbered step's criteria or formula that
is evaluated before proceeding. Hover over or click the diamond to see the criteria or formula
in the sidebar's hover details. For example, the criteria could be used to determine whether
the Lead.Rating = Hot. If true, the approval process continues to the next step on the
Yes branch. If false, the approval process continues to the next step on the No branch.
A rectangle containing a human icon, represents an approval step. The Approved path
includes a small diamond. The Rejected path uses a backslash.
68
Custom Cloud Process Visualizer—Generally Available
In this example, a task has been assigned. When you hover over or click the rectangle, look
for more information in the sidebar's hover details.
A rectangle with a plus sign (+) represents multiple actions. The actions shown inside are
performed simultaneously, as a unit. To expand the display and view the individual actions,
click the plus sign. In the expanded display, the Process Visualizer displays the individual
actions, one per rectangle.
When you hover over or click a shape on the diagram, and it is part of a step, all the elements
that comprise the step use a glowing background color. This visual clue helps you locate all
the decisions and actions that comprise each step, and how the processing may branch based
on the record's values.
69
Custom Cloud Workflow Email Alerts—Override the From Email Address
The identified steps depend on where in the approval process the Go Back was defined. The
possible steps are highlighted when you hover over the Go Back circle. In the diagram, the
Process Visualizer displays the Go Back circle only for a step where its preceding step is
defined as a skip.
The Final Approval Actions rectangle leads to a circle labeled Approved, as shown
here. The Final Rejection Actions rectangle leads to a circle labeled Rejected. If
a recall action was defined, the Final Recall Actions rectangle shows that the record
is now unlocked, and the arrow leads to a circle labeled Recalled.
You asked for it! This enhancement is an idea from the IdeaExchange.
With Winter '10, you can now customize each email alert to replace the user's From email address with a standard
organization-wide email address, such as [email protected]. Recipients of the email alert then reply to the global
email address instead of to the Salesforce.com user who updated the record.
Implementation Tips
• Set up your organization-wide email addresses before customizing the From Email Address for an email alert.
• You can choose a different organization-wide email address as the From address for each email alert, or you can designate
that all email alerts for an object use the same From email address.
70
Custom Cloud Workflow Email Alerts—Override the From Email Address
• Only verified organization-wide email addresses display in the From Email Address picklist.
• You cannot delete or change an organization-wide email address if it is used by an email alert.
You can now override the From Email Address in email alerts and set it to a previously configured and verified
organization-wide email address. This allows you to use a standard global email address for your organization (such as
[email protected]) instead of the default From field, which is the email address of the person who updates the record.
6. Click Save.
Organization-Wide Addresses
Available in: All Editions
If your organization requires users to share a common email alias, you can define a list of organization-wide addresses for each
user profile. Organization-wide addresses define a common email address that a user profile can use. When sending email
71
Custom Cloud Force.com Sites Enhancements
from Salesforce.com, users with these profiles can choose a different From address than the email address they have defined.
Replies are delivered to the organization-wide address.
For example, assume your organization has several users under a single Support Profile. A Support Profile can be associated
with an email address called [email protected] and a Display Name of Acme Support. When Support Profile users
send an outbound email through Salesforce.com, they can choose to have their From address appear as [email protected]
instead of their own Salesforce.com email address.
The highlighted sections in the following image represents the changes to the From address and Display Name that the
recipient of an email might see:
After an organization-wide address is verified, it is available as a From address when sending an email or an email alert.
To display the list of defined organization-wide addresses, click Setup ➤ Email Administration ➤ Organization-Wide
Addresses. From this page you can:
- Display Name is the word or phrase users who receive your email will see as the sender of the email.
- Email Address is the email address that is used when sending an outbound email.
- Allowed Profiles lists the profiles which use the email address as an alias.
- Status shows the current stage of verification. When you add a new organization-wide address, it must be verified
as a valid email address before becoming available for use. If you have not received your verification email, click Resend
to have another one sent.
Note: You cannot use an organization-wide address to send a mass email or a Stay-in-Touch request. You cannot
delete or change an organization-wide email address if it is used by an email alert.
Winter '10 includes new features that improve the capabilities of Force.com sites:
72
Custom Cloud Force.com Sites Enhancements
<site:googleAnalyticsTracking/>
Pages that don't contain the tag and aren't associated with a site template that contains the tag won't be tracked. The
default site template already contains the tag, so all pages using that template will be tracked—including certain default
pages.
Note: Google recommends adding the component at the bottom of the page to avoid increasing page load time.
6. Go to the Google Analytics site and follow their instructions for completing the process. After signing up, it may take up
to 24 hours to see initial tracking results in Google Analytics.
Tip: To track multiple sites separately, create separate profiles using the full site URLs and enter a different Web
property ID in the Analytics Tracking Code field for each site.
You can also reference the new Analytics Tracking Code field in the following ways:
With Winter '10, you can set a custom Service Not Available page to show site users when Salesforce.com servers are unavailable.
This custom page is rendered from a static resource that you choose. The static resource is uploaded to the cache server when
73
Custom Cloud Force.com Sites Enhancements
assigned as the Service Not Available page, and when updated after assignment. The custom page is shown for HTTP requests
only; caching is not used for HTTPS.
The static resource:
You asked for it! This enhancement is an idea from the IdeaExchange.
With Winter '10, the Secure Web Address field—the unique Force.com URL for this site when using SSL—is displayed
on the Site Details page and the Login Settings page.
To view the Secure Web Address for your site:
74
Custom Cloud Formula Enhancements
Formula Enhancements
Available in: All Editions
Winter ‘10 delivers a set of formula enhancements that increase the productivity of both administrators and users.
ISBLANK
75
Custom Cloud Formula Enhancements
BLANKVALUE
Description: Determines if an expression has a value and returns a substitute expression if it does
not. If the expression has a value, returns the value of the expression.
Use: BLANKVALUE(expression, substitute_expression) and replace
expression with the expression you want evaluated; replace
substitute_expression with the value you want to replace any blank values.
/*
This is
a multiline
comment
*/
Comments are useful for explaining specific parts of a formula to administrators viewing the formula definition. For example:
AND(
/*competitor field is required, check to see if field is empty */
LEN(Competitor__c) = 0,
/* rule only enforced for ABCD record types */
$RecordType.Name = "ABCD Opportunity",
/* checking for any closed status, such as closed won and closed lost…allows for additional
76
Custom Cloud Fast Data Loading with New Bulk API
You can also use comments to comment out sections of your formula when debugging and checking the syntax to locate errors
in the formula.
Note:
• Nesting comments causes a syntax error. For example, you cannot save a formula that has the following:
/* /* comment */ */
In previous releases, the ISNUMBER function was not available in formula fields. With Winter '10, the ISNUMBER function
is available everywhere formulas exist except report summary fields.
Winter '10 introduces a new Bulk API that is optimized to insert, update, or upsert a large number of records asynchronously.
The new Bulk API allows you to load large batches of data that are processed in the background. The Bulk API offers a
number of benefits over loading data with the regular SOAP-based Web Services API:
• You can load data faster because of parallel processing and fewer network round-trips.
• You can monitor currently processing and completed data loads by navigating to Setup ➤ Monitoring ➤ Bulk Data Load
Jobs. You can also abort current data loads from this page. You need the new “Manage Data Integrations” permission to
access the monitoring page.
• You can enjoy improved robustness as large data loads complete quicker and are less likely to be disrupted by network
failures.
77
Custom Cloud Fast Data Loading with New Bulk API
To track the status of bulk data load jobs that are in progress or recently completed, click Setup ➤ Monitoring ➤ Bulk Data
Load Jobs.
The In Progress Jobs list contains the following columns, shown in alphabetical order:
Column Description
Job ID The unique, 15–character ID for this job.
Object The object type for the data being processed. All data in a job must be of a single object type.
Operation The processing operation for all the batches in the job. The valid values are:
• insert
• upsert
• update
Progress The percentage of batches processed relative to the total number of batches submitted. Progress is not
shown when the job is open because the total number of batches in the job is not known until the job is
closed. Progress may not accurately reflect the number of records processed. Batches may not all contain
the same number of records and they may be processed at different speeds.
Records The number of records already processed. This number increases as more batches are processed.
Processed
Start Time The date and time when the job was submitted.
Status The current state of processing for the job. The valid values are:
• Open: The job has been created, and batches can be added to the job.
78
Custom Cloud Fast Data Loading with New Bulk API
Column Description
• Closed: No new batches can be added to this job. Batches associated with the job may be processed
after a job is closed. You cannot edit or save a closed job.
• Aborted: The job has been aborted.
• Failed: The job has failed. Batches that were successfully processed in the job cannot be rolled back.
The Completed Jobs list contains the following columns, shown in alphabetical order. Completed jobs are removed from the
list seven days after completion.
Column Description
End Time The date and time when the job completed.
Job ID The unique, 15–character ID for this job.
Object The object type for the data being processed. All data in a job must be of a single object type.
Operation The processing operation for all the batches in the job. The valid values are:
• insert
• upsert
• update
Records The number of records already processed. This number increases as more batches are processed.
Processed
Start Time The date and time when the job was submitted.
Status The current state of processing for the job. The valid values are:
• Open: The job has been created, and batches can be added to the job.
• Closed: No new batches can be added to this job. Batches associated with the job may be processed
after a job is closed. You cannot edit or save a closed job.
• Aborted: The job has been aborted.
• Failed: The job has failed. Batches that were successfully processed in the job cannot be rolled back.
79
Custom Cloud Force.com Web Services API Enhancements
The Force.com Web Services API version 17.0 contains new features and bug fixes that improve the capabilities of applications
that leverage the Force.com platform. Considerable effort has been made to ensure backwards capability for applications that
have been written against previous versions of the API, starting with API 2.5.
The new API provides a number of powerful enhancements that further improve any integration already in place between
Salesforce.com and your other systems.
After the Winter '10 release, the 16.0 version of the WSDL file is no longer available. Instead, all requests for a WSDL return
a 17.0 version. Please remember to save WSDL files with your project, as the enterprise WSDL is custom to your organization.
Salesforce.com maintains backwards compatibility with previous versions of our API in accordance with our stated support
policy. We recommend that developers migrate to the latest version of the API as often as is feasible in order to receive the
benefit of new enhancements from release to release. Developers with integrations on API versions prior to version 2.5 should
plan to migrate to the most recent API in preparation for the eventual end of support for the older API versions.
Changed Objects
The following objects have been changed in API version 17.0:
• The Attachment object includes the following new fields to support Salesforce to Salesforce:
- ConnectionReceivedID
- ConnectionSentID
- IsPartnerShared
80
Custom Cloud Force.com Web Services API Enhancements
• The Campaign object includes the CampaignMemberRecordTypeId field, which is used to set the record type for
CampaignMember records associated with a campaign.
• The CampaignMember object includes the CurrencyIsoCode field to support currency changes on
CampaignMember records, and the RecordTypeId field to display the record type associated with the
CampaignMember. The CampaignMember record type is set using the CampaignMemberRecordTypeId field
on an associatedCampaign.
• The LanguageLocaleKey field has been renamed in the CategoryNodeLocalization, ScontrolLocalization, and
WebLinkLocalization objects. It is now the Language field. The Language field is available in version 17.0 and
later. The LanguageLocaleKey field is available in version 16.0 and earlier.
• The EmailServicesFunction object includes these fields:
- IsErrorRoutingEnabled and ErrorRoutingAddress to support sending error notification email messages
to a chosen email address instead of notifying the sender
- IsTextTruncated to support truncating oversize emails
• The User object includes the AccountId field to support High-Volume Customer Portal Users.
• The Vote object can now be used to vote on the new Reply object.
Changed Calls
You asked for it! This enhancement is an idea from the IdeaExchange.
The DescribeGlobalResult object returned by the describeGlobal() call no longer supports the types property.
Instead, DescribeGlobalResult has a new sobjects property that enhances the information that was previously available
in the types property. In many cases, the new property can increase performance as the extra information that it includes
reduces the need for subsequent describeSObjects() calls for further information.
The DescribeSObjectResult and DescribeGlobalSObjectResult objects include the customSetting field to support
custom setting objects.
The sendEmail() call now includes:
• contentType and inline properties on EmailFileAttachment to specify email attachments' Content-Types and
Content-Dispositions
• inReplyTo and references arguments for SingleEmailMessage to support tracking of email threads
81
Custom Cloud Force.com Apex Code Enhancements
• Release 12.0:
http://wiki.apexdevnet.com/index.php?title=What%27s_New_in_Force.com_Web_Services_API_Spring_%2708
• Release 13.0:
http://wiki.apexdevnet.com/index.php/What%27s_New_in_Force.com_Web_Services_API_Summer_%2708
• Release 14.0: Force.com Web Services API Developer's Guide Version 14.0
• Release 15.0: Force.com Web Services API Developer's Guide Version 15.0
• Release 16.0: Force.com Web Services API Developer's Guide Version 16.0
Documentation for these earlier versions is also available. See
wiki.developerforce.com/index.php/Earlier_Reference_Documentation on Developer Force for links to
online and PDF versions.
Force.com Apex code includes the following enhancements in Winter '10. Refer to the Force.com Apex Code Developer's
Guide for complete information about Apex.
Custom Iterators
You can create your own iterators to set your own criteria for traversing through a collection by implementing the
Iterable and Iterator interfaces. These can also be used with Lists and batch Apex.
82
Custom Cloud Force.com Apex Code Enhancements
83
Custom Cloud Force.com Apex Code Enhancements
- plainTextBodyIsTruncated
Documentation Updates
The following updates have been made to the Force.com Apex Developer's Guide:
• The Database.upsert method signature was documented incorrectly.The signature uses Schema.sObjectField
for the external ID.
• You cannot add a list of messages as sObjects to ApexPages using the addMessages method.
84
Custom Cloud Force.com Apex Code Enhancements
• The Process method for Approval can be used with a single Approval.ProcessRequest item or with a list of
Approval.ProcessRequest items. Both the single case and the list case can also use the optional all_or_nothing
parameter.
• Date and DateTime have a method Parse that constructs a Date or Datetime from the specified String.
• The DescribeFieldResult.getReferenceTo method actually returns a list of schema.sobjectType objects
• DescribeFieldResult has a getRelationshipOrder method that returns the type of relationship.
• The DescribeFieldResult.getSOAPType method returns a Schema.SOAPType object, which has enum values
such as Boolean, Date, and so on.
• The DescribeFieldResult.getType method returns a Schema.DisplayType object. Also, the
Schema.DisplayType values include EncryptedString and Time.
• DescribeFieldResult has a isWriteRequiresMasterRead method that returns the type of permission necessary
to read or write to the child object in the relationship.
• Limits have the methods getQueryLocatorRows and getLimitQueryLocatorRows for QueryLocators.
• You can add both Lists and Sets using the addAll method for a List.
• The Map putAll method using a list of sObjects returns Void.
• Schema does not have a method rowCause. It is a property.
• The sObject methods getSObject and getSObjects take an schema.SObjectField object for an argument.
• The sObject method putSObject takes a schema.SObjectField object for an argument.
• The schema.DescribeSObjectResult object has a method getSObjectType for determining the type of the sObject.
• The Schema.DescribeSObjectResult object does not have an isTriggerable method.
• String has a Format method for formatting values.
• String has a fromCharArray method for creating a string from a list of integers.
• The String method indexOf can be used just with a substring. You don't have to specify a starting index.
• System has a method currentPageReference used with Visualforce to return a reference to the current page.
• System has a method Process, used to process workflow approvals.
• System has a method Submit used to submit workflow approvals that have been processed.
• Test has a method setCurrentPageReference used to set the current page reference for the controller.
• HTTP has a method toString that returns a string that displays and identifies this object's properties.
• The HttpRequest method setHeader actually takes two strings as arguments, one for the key, the other for the
value.
• The HttpRequest method getMethod does not take an argument.
• The correct Sites method is getanalyticsTrackingCode.
• For Sites, the last argument (old_password) is optional for the ChangePassword method.
• For Sites, the last argument (password) is optional for the CreatePortalUser method.
• XmlStreamReader has a method getPIData that returns the data section of a processing instruction.
• XmlStreamReader has a method getPITarget that returns the target section of a processing instruction.
• XmlStreamReader method getEventType returns additional values.
• XmlStreamWriter has the method setDefaultNamespace, that binds a URI to the default namespace.
85
Custom Cloud Batch Apex
Batch Apex
You asked for it! This enhancement is an idea from the IdeaExchange.
Batch Apex was introduced in a limited release in Summer '09. As of Winter '10, batch Apex is generally available.
Batch Apex provides developers the ability to operate over large amounts of data by chunking the job into smaller parts, thereby
keeping within the governor limits. Using batch Apex, a developer can build complex, long-running processes on the Force.com
platform. For example, a developer could build an archiving solution that runs on a nightly basis, looking for records past a
certain date and adding them to an archive. Or a developer could build a data cleansing operation that goes through all Accounts
and Opportunities on a nightly basis and reassigns them if necessary, based on custom criteria.
All batch Apex jobs run asynchronously. After a job is placed in the job queue, it runs when system resources become available.
The following enhancements have been made to batch Apex for Winter '10:
- A Database.BatchableContext object for keeping track of the batch job while it's running
- A list of sObjects or parameterized types, that is, a list in which the data type is not defined until the interface is called
• The start and finish methods also take the Database.BatchableContext object for keeping track of the batch
job while it's running.
• The start method now takes either a Database.QueryLocator object or a custom iterable.
• A maximum of 50 million records can be returned in the Database.QueryLocator object.
• You can have a maximum of five queued or active batch jobs.
• You can now perform callouts from batch classes that implement the Database.AllowsCallouts interface.
• You can now maintain state across a batch execution in classes that implement the Database.Stateful interface.
• The Database.executeBatch method now takes an optional scope parameter, which can be used to limit the number
of records to be passed as a single chunk to the execute method.
• When an exception occurs during the execution of a batch job, an email notification is now sent.
86
Custom Cloud Batch Apex
• Methods declared as future are not allowed in classes that implement the Database.Batchable interface.
• Methods declared as future cannot be called from a batch Apex class.
• In the event of a catastrophic failure such as a service outage, any operations in progress are marked as Failed. You should
run the batch job again to correct any errors.
• When a batch Apex job is run, email notifications are sent either to the user who submitted the batch job, or, if the code
is included in a managed package and the subscribing organization is running the batch job, the email is sent to the recipient
listed in the Apex Exception Notification Recipient field.
• Each method execution uses the standard governor limits anonymous block, Visualforce controller, or WSDL method.
• Each batch Apex invocation creates an AsyncApexJob record. Use the ID of this record to construct a SOQL query to
retrieve the job’s status, number of errors, progress, and submitter. For more information about the AsyncApexJob object,
see AsyncApexJob in the Force.com Web Services API Developer's Guide.
• All methods in the class must be defined as global.
• For a sharing recalculation, Salesforce.com recommends that the execute method delete and then re-create all Apex
managed sharing for the records in the batch. This ensures the sharing is accurate and complete.
The start method is called at the beginning of a batch Apex job. Use the start method to collect the records or objects
to be passed to the interface method execute. This method returns either a Database.QueryLocator object or an iterable
that contains the records or objects being passed into the job.
Use the Database.QueryLocator object when you are using a simple query (SELECT) to generate the scope of objects used
in the batch job. If you use a QueryLocator object, the governor limit for the total number of records retrieved by SOQL
queries is bypassed. For example, a batch Apex job for the Account object returns a QueryLocator for all account records
in an organization. Another example is a sharing recalculation for the Contact object that returns a QueryLocator for all
contact records in an organization.
Use the iterable when you need to create a complex scope for the batch job. You can also use the iterable to create your
own custom process for iterating through the list. .
Important: If you use an iterable, the governor limit for the total number of records retrieved by SOQL queries
is still enforced.
• execute method:
The execute method is called for each batch of records passed to the method. Use this method to do all required processing
for each chunk of data.
This method takes the following:
- A reference to the Database.BatchableContext object.
87
Custom Cloud Apex Scheduler—Limited Release
- A list of sObjects, such as List<Acccount>, or a list of parameterized types. If you are using a Database.QueryLocator,
the returned list should be used.
• finish method
The finish method is called after all batches are processed. Use this method to send confirmation emails or execute
post-processing operations.
All of the methods require a reference to a Database.BatchableContext object. Use this object to keep track of the context of
the batch job. For example:
The Database.BatchableContext method getJobId returns the Id of the AsyncApexJob object associated with this batch job
as a string. Use this method to track the progress of records in the batch job.
Each execution of a batch Apex job is considered a discrete transaction. For example, a batch Apex job that contains 1,000
records and is executed without the optional scope parameter from Database.executeBatch is considered five transactions
of 200 records each. The Apex governor limits are reset for each transaction. If the first transaction succeeds but the second
fails, the database updates made in the first transaction are not rolled back.
You asked for it! This enhancement is an idea from the IdeaExchange.
You can schedule Apex classes to run at specific times. First implement the Schedulable interface for the class, then specify
the schedule using either the Schedule Apex page in the Salesforce.com user interface, or the System.schedule method.
In addition, you can use the new method System.abortJob to stop a job after it has been scheduled.
Note: The Apex scheduler is currently available through a limited release program. To verify if it is possible to join
the limited release program and enable the Apex scheduler for your organization, contact salesforce.com.
88
Custom Cloud Apex Scheduler—Limited Release
Implementation Tips
• You must implement the Schedulable interface for the class first before you can schedule the class.
• Use either the System.schedule method or the Schedule Apex page in the Salesforce.com user interface to schedule
the class.
• After you schedule a job, you can monitor the progress of the job on the All Scheduled Jobs page.
• Salesforce.com only enqueues the process at the scheduled time. Actual execution may be delayed based on service availability.
• Once the job has completed, you can see specifics about the job (such as whether it passed or failed, how long it took to
process, the number of records process, and so on) on the Apex Jobs page.
• The System.schedule method uses the user's timezone for the basis of all schedules.
• Use the System.abortJob to stop jobs that were scheduled using System.schedule.
Best Practices
• Scheduled jobs should be run as background processes and not tied to transactional events. Though you can use a trigger
to schedule a job, remember that you can have only ten queued or active scheduled jobs.
• Though it's possible to do additional processing in the execute method, Salesforce.com recommends that all processing
take place in a separate class.
Use the SchedulableContext object to keep track of the scheduled job once it's scheduled. The SchedulableContext method
getTriggerId returns the Id of the CronTrigger object associated with this scheduled job as a string. Use this method to
track the progress of the scheduled job.
Use this method to instantiate the class you want to schedule.
Tip: Though it's possible to do additional processing in the execute method, Salesforce.com recommends that all
processing take place in a separate class.
The following example implements the Schedulable interface for a class called mergeNumbers:
89
Custom Cloud Apex Scheduler—Limited Release
}
}
The following example uses the System.Schedule method to implement the above class.
You can also use the Schedulable interface with batch Apex classes. The following example implements the Schedulable
interface for a batch Apex class called batchable:
After you implement a class with the Schedulable interface, use the System.Schedule method to execute it.
Note: Scheduled jobs should be run as background processes and not tied to transactional events. Though you can
use a trigger to schedule a job, remember that you can have only ten queued or active scheduled jobs.
The System.Schedule method takes three arguments: a name for the job, an expression used to represent the time and
date the job is scheduled to run, and the name of the class. This expression has the following syntax:
Note: Salesforce.com only enqueues the process at the scheduled time. Actual execution may be delayed based on
service availability.
The System.Schedule method uses the user's timezone for the basis of all schedules.
Day_of_month 1–31 , - * ? / L W
90
Custom Cloud Apex Scheduler—Limited Release
• # —Specifies the nth day of the month, in the format weekday#day_of_month. This is only available for Day_of_week.
The number before the # specifies weekday (SUN-SAT). The number after the # specifies the day of the month. For
example, specifying 2#2 means the class runs on the second Monday of every month.
The following are some examples of how to use the expression.
91
Custom Cloud Apex Scheduler—Limited Release
Expression Description
0 0 13 * * ? Class runs every day at 1 P.M.
0 0 22 ? * 6L Class runs the last Friday of every month at 10 P.M.
0 0 10 ? * MON-FRI Class runs Monday through Friday at 10 A.M.
0 0 20 * * ? 2010 Class runs every day at 8 P.M. during the year 2010.
In the following example, the class proschedule implements the Schedulable interface. The class is scheduled to run at
8 A.M., on the 13th of February.
Scheduling Apex
Available in: Unlimited, Developer, and Enterprise Editions
Note: The Apex scheduler is currently available through a limited release program. To verify if it is possible to join
the limited release program and enable the Apex scheduler for your organization, contact salesforce.com.
Use the Apex scheduler if you have specific Apex classes that you want to run on a regular basis, or to run a batch Apex job
using the Salesforce.com user interface.
Important: Salesforce.com only enqueues the process at the scheduled time. Actual execution may be delayed based
on service availability.
1. Implement the Schedulable interface in an Apex class that instantiates the class you want to run.
2. Click Setup ➤ Develop ➤ Apex Classes and click Schedule Apex.
3. Specify the name of a class that you want to schedule.
4. Specify how often the Apex class is to run.
• For Weekly—specify one or more days of the week the job is to run (such as Monday and Wednesday).
• For Monthly—specify either the date the job is to run or the day (such as the second Saturday of every month.)
5. Specify the start and end dates for the Apex scheduled class. If you specify a single day, the job only runs once.
6. Specify a preferred start time. The exact time the job starts depends on what other jobs are in the queue at that time.
7. Click Save.
Note: You can only have ten active or scheduled jobs concurrently.
After you schedule an Apex job, you can monitor the progress of the job on the All Scheduled Jobs page.
92
Custom Cloud Custom Settings
Once the job has completed, you can see specifics about the job (such as whether it passed or failed, how long it took to process,
the number of records process, and so on) on the Apex Jobs page.
Custom Settings
You asked for it! This enhancement is an idea from the IdeaExchange.
Custom settings provide developers a mechanism to deliver application metadata and associate this data at the organization,
profile, and user level. Custom settings are cached and provide efficient programmatic access without the cost of database
queries. This data can be used by Apex, Visualforce, formula fields, validation rules, and the Force.com Web services API.
Custom settings are similar to custom objects and enable application developers to create custom sets of data, as well as create
and associate custom data for an organization, profile, or specific user. All custom settings data is exposed in the application
cache, which enables efficient access without the cost of repeated queries to the database. This data can then be used by formula
fields, validation rules, Apex, and the Force.com Web Services API.
There are two types of custom settings:
List Custom Settings
A type of custom setting that provides a reusable set of static data that can be accessed across your organization. If you
use a particular set of data frequently within your application, putting that data in a list custom setting streamlines access
to it. Data in list settings does not vary with profile or user, but is available organization-wide. Examples of list data
include two-letter state abbreviations, international dialing prefixes, and catalog numbers for products. Because the data
is cached, access is low-cost and efficient: you don't have to use SOQL queries that count against your governor limits.
93
Custom Cloud Custom Settings
specific, or “lowest,” value. In the hierarchy, settings for an organization are overridden by profile settings, which, in
turn, are overridden by user settings.
The following examples illustrate how you can use custom settings:
• A Salesforce.com partner has created a shipping application that requires users to fill in the country codes for international
deliveries. By creating a list setting of all country codes, users have quick access to this data without needing to query the
database.
• A Salesforce.com partner has created an application to calculate and track compensation for its sales reps, but commission
percentages are based on seniority. By creating a hierarchy setting, the administrator can associate a different commission
percentage for each profile in the sales organization. Within the application, one formula field can then be used to correctly
calculate compensation for all users; the personalized settings at the profile level inserts the correct commission percentage.
• A Salesforce.com partner has created an application that displays a map of account locations, the best route to take, and
traffic conditions. This information is useful for sales reps, but account executives only want to see account locations. By
creating a hierarchy setting with custom checkbox fields for route and traffic, you can enable this data for just the “Sales
Rep” profile.
Follow these steps to create and use custom settings:
You can also include a custom setting in a package. The visibility of the custom setting in the package depends on the
Visibility setting.
Note: Only custom settings definitions are included in packages, not data. If you need to include data, you must
populate the custom settings using a standard Apex or API script run by the subscribing organization after they have
installed the package.
Note: A icon indicates that the custom setting is in an installed managed package. You cannot edit or delete
a custom setting installed from a managed package.
• Click Manage to add data to a custom setting. You should add fields before you add data.
94
Custom Cloud Custom Settings
Salesforce.com imposes these limits on the amount of cached data and on custom settings:
Note: A icon indicates that the custom setting is in an installed managed package. You cannot edit or delete
a custom setting installed from a managed package.
95
Custom Cloud Custom Settings
- Protected—If the custom setting is contained in a managed package, subscribing organizations can't see the custom
setting: it doesn't display as part of the package list. In addition, subscribing organizations can't access the custom
setting using either Apex or the API, however, developer organizations can. If the custom setting is contained in
an unmanaged package, the custom setting is available through the Enterprise WSDL like any custom object (as
if the Visibility was Public.)
- Public—The custom setting is available through the Enterprise WSDL like any custom object. You can package
custom settings defined as public. The subscribing organizations can edit the values, as well as access them using
Apex and the API, regardless of the type of package (either managed or unmanaged).
Important: After you save a custom setting, you cannot change this value.
4. Enter an optional description of the custom setting. A meaningful description will help you remember the differences
between your custom settings when you are viewing them in a list.
5. Click Save.
Note: Only custom settings definitions are included in packages, not data. If you need to include data, you must
populate the custom settings using a standard Apex or API script run by the subscribing organization after they
have installed the package.
After you create a custom setting, you must also add fields to the custom setting.
After you define custom settings, you need to add custom fields to it. The custom fields contain the data, used by the custom
setting.
To add custom fields to a custom setting:
After you add the required fields, you need to add data and for hierarchy custom settings, specify the access level.
96
Custom Cloud Custom Settings
After you define your custom settings and add fields, you need to populate the fields with data.
You can define one or more data sets. For list custom settings, each data set is named and can be accessed by that name using
Apex, formula fields, and so on.
For custom settings that are hierarchies, the data is accessed based on the access level (user, profile, or organization). The
lowest level is used first, which means if you defined a data set at the user level, unless otherwise specified in your application,
that data is used. For example, you might want to specify different contact numbers for your application: one for the general
user, and one that is only displayed for system administrators.
To add data to custom setting fields:
1. Click Setup ➤ Develop ➤ Custom Settings, then click Manage next to a custom setting. Or from the detail page for a
custom setting, click Manage.
2. Click New or Edit next to an existing data set.
3. Add or change data.
For custom settings that are lists, do the following:
a. Specify or change the name for the data set. This name is used by Apex, formula fields, and so on.
b. Enter or change data for all fields.
c. Click Save.
a. For the default organization level values, enter or change the data for the fields. The default organization location is
automatically populated.
b. For profile or user level values, select either Profile or User from the Location picklist. Enter the name of the
profile or user, or use the lookup dialog search. Then enter or change the data for the fields.
c. Click Save.
97
Custom Cloud Custom Settings
Formula Fields
Formula fields only work for hierarchy custom settings; they cannot be used for list custom settings. For more information
on using formula fields, see Creating On-Demand Applications: An Introduction to the Force.com Platform.
{!$Setup.CustomSettingName__c.CustomFieldName__c}
Apex
Apex scripts can access both custom setting types.
Note: If Privacy for a custom setting is Protected, and the custom setting is contained in a managed package,
the subscribing organization cannot edit the values or access them using Apex.
For more information on all the custom setting methods and Apex, see the Force.com Apex Code Developer's Guide.
Samples for List Custom Settings
When you add data to a custom setting, you must name each set of data. Then you can distinguish between the
sets of data by the data set name. The following returns a map of custom settings data. The getAll method returns
values for all custom fields associated with the list setting.
The following example uses the getValues method to return all the field values associated with the specified
data set. This method can be used with both list and hierarchy custom settings, using different parameters.
CustomSettingName__c mc = CustomSettingName__c.getValues(data_set_name);
CustomSettingName__c mc = CustomSettingName__c.getOrgDefaults();
The following example uses the getInstance method to return the data set values for the specified profile. The
getInstance method can also be used with a user Id.
CustomSettingName__c mc = CustomSettingName__c.getInstance(Profile_ID);
Use any tool with API access to perform query or profile-permission-setting operations. For more information, see the
Force.com Web Services API Developer's Guide.
98
Custom Cloud Force.com Development as a Service
Force.com Development as a Service (DaaS) provides the tools and technologies used by professional developers who build
applications for the Force.com platform, as well as those who migrate application changes between development organizations
and production. The DaaS feature area includes support for creating, retrieving, and deploying changes to your organization's
metadata.
Note: There is no new Force.com IDE release for Winter '10, so changes to the Metadata API for version 17.0 are
not reflected in that tool.
Updated Metadata
The Metadata API has been improved for Winter '10:
List Views for Standard Objects
The Metadata API now supports list views for standard objects, such as accounts, as well as continued support for list
views for custom objects.
The following metadata fields have been added or changed in Metadata API version 17.0:
99
Custom Cloud Force.com Development as a Service
100
Custom Cloud Force.com Development as a Service
101
Custom Cloud Force.com Development as a Service
102
Custom Cloud Force.com Development as a Service
WorkflowAlert senderType New The email used as the sender's From and
Reply-To addresses.
103
Custom Cloud Cloud Deploy—Change Sets Beta
Caution: This change only affects organizations that use the Metadata API and maintain a copy of their metadata
outside of Salesforce.com, such as in a version control system.
You asked for it! This enhancement is an idea from the IdeaExchange.
Cloud Deploy allows you to move and monitor metadata deployments between organizations. Use change sets to move
configuration changes using the Web interface. If you've struggled with moving changes from sandbox to production, or have
been searching for an easier tool to use than the Force.com IDE or the Force.com Migration Tool, change sets will drastically
increase your productivity.
Implementation Tips
Permissions required to use change sets
To send a change set to another organization, a user must have the “Create and Upload Change Sets” profile permission.
To deploy a change set received from another organization, a user must have the “Deploy Change Sets” profile permission.
104
Custom Cloud Cloud Deploy—Change Sets Beta
Best Practices
Change sets is a beta feature limited to a select number of customers. During the beta period, functionality may change at any
time in order to fix bugs, remove limitations, or improve the feature in other ways. The following list contains best practices.
Deploy all dependent components
Make sure each change set contains all interdependent components that don't exist in the target organization. If you try
to deploy a component that refers to another component missing from the target organization and from the change set,
the deployment will fail.
Change sets give you fine-grained control over what you deploy. For example, you can migrate custom fields individually.
To deploy a custom object and all of its fields, you must add the custom object and every field to the change set; adding
just the custom object to the change set won't cause deployment to fail, but results in an empty custom object.
105
Custom Cloud Cloud Deploy—Change Sets Beta
Change Sets—Beta
Available in Enterprise, Unlimited, and Free Editions
• The beta release has known limitations; functionality may change at any time.
• Salesforce.com Customer Support does not officially support change sets during the beta period.
• This feature will be enabled shortly after your production organization is upgraded to Winter
'10.
A change set is a means by which one organization can send customizations to another organization. For example, you could
create a new object in a sandbox organization and send it to your production organization using a change set. Change sets can
only contain modifications you can make through the Setup menu; therefore, you can't use a change set to upload a list of
contact records. In other words, change sets contain metadata, not data.
When you want to send customizations from your current organization to another organization, you create an outbound change
set. Once you send the change set, the receiving organization sees it as an inbound change set.
106
Custom Cloud Cloud Deploy—Change Sets Beta
Sending a change set between two organizations requires a deployment connection. Currently, change sets can only be sent
between organizations that are affiliated with a production organization, for example, a production organization and a sandbox,
or two sandboxes created from the same organization.
• Apex class
• Apex trigger
• Analytic snapshot
• Custom application
• Custom object or standard object
• Custom object translation
• Custom field
• Custom label
• Custom page Web link
• Custom site
• Custom tab
• Dashboard
• Document
• Email template
• Folder
• Home page component
• Home page layout
• Page layout
• Letterhead
• Picklist
• Portal
• Record type
• Report
• Report type
• S-control
• Static resource
• Translation workbench
• Validation rule
• Visualforce component
• Visualforce page
• Web link
• Workflow
107
Custom Cloud Cloud Deploy—Change Sets Beta
Note: If you create or modify components that are not available in the Metadata API, you cannot send those components
from one organization to another in a change set. In this case, migrate the changes manually by repeating the steps
you performed when you created or modified the component.
Deployment Connections
User Permissions Needed
To edit deployment connections: “Deploy change sets”
In order for change sets to be sent from one organization to another, a deployment connection is required between the
organizations. Deployment connections can't be created between arbitrary organizations; instead, a deployment connection
is created between all organizations affiliated with a production organization. For example, if you have a production organization
(Prod) and two sandboxes (Dev and Test), a deployment connection will be created between production and each sandbox
(Prod and Dev, and another connection between Prod and Test), as well as between the sandboxes (Dev and Test).
A deployment connection alone doesn't enable change sets to be sent between organizations. Each organization must be
authorized to send and receive change sets. This added level of security enforces code promotion paths and keeps organizations'
setup metadata from being overwritten by mistake.
For example, the following figure illustrates a production organization and two sandboxes. In this example, the IT department
decided that the production organization can only receive changes that have been fully tested, so only the Test sandbox is
authorized to upload change sets to production. Also, they wanted to make sure that the Prod organization can send change
sets to the Dev sandbox, but not to the Test sandbox. Finally, because the features in development need iterative testing, Dev
and Test sandboxes should be able to send change sets back and forth.
Note: This illustration describes one possible code migration path. Your IT department must create its own policies
for organizations to send and receive change sets to one another.
108
Custom Cloud Cloud Deploy—Change Sets Beta
Action
Click Edit next to the organization that you want to allow or disallow change sets from.
Name
A list of organizations that have deployment connections to the organization you are currently logged into. Click the
name of an organization to view more information about the connection.
Description
A brief description of the connected organizations.
Type
The type of organization you are connected to. Possible values are Production, Full Copy Sandbox, Configuration-only
Sandbox, and Developer Sandbox.
Name
The name of the selected organization. This is not the organization you are logged into.
Description
A brief description of the organization.
109
Custom Cloud Cloud Deploy—Change Sets Beta
Type
The type of organization you are connected to. Possible values are Production, Full Copy, Configuration-only, and
Developer.
An outbound change set is a change set created in the organization you are logged into and that you want to send to another
organization. Typically, an outbound change set is used for customizations created and tested in a sandbox and then sent to
a production organization.
Sending an outbound change set to another organization doesn't guarantee that the changes will be implemented in that
organization. The change set must deployed (accepted) by the target organization before the changes take effect.
110
Custom Cloud Cloud Deploy—Change Sets Beta
An inbound change set is a change set that has been sent from another organization to the organization you are logged into. A
change sent must be deployed for the changes to take effect. You can deploy or reject the contents of an inbound change set as
a whole, but not on a component-by-component basis.
111
Custom Cloud Remote Access Applications
Note: The Force.com platform requires at least 75% of your code to be covered by unit tests before you can deploy it
to a production organization. Ideally, you should strive for 100% coverage. The code coverage restriction is not enforced
for sandbox or Developer Edition organizations.
Monitoring Deployments
The size and complexity of the change set determines how long it takes for a change set to deploy. During this time, it can be
helpful to monitor the deployment. To track the status of deployments that are in progress click Setup ➤ Deploy ➤ Inbound
Change Sets ➤ Change Set Detail. Under the Deployment History related list, click View Results.
Note: The Monitor Deployments page can be used for checking the status of deployments made through the Metadata
API. However, change sets are not currently supported in the Monitor Deployments page.
A remote access application is an application external to Salesforce.com that uses the OAuth protocol to verify both the
Salesforce.com user and the external application. Use remote access applications to access Salesforce.com data in an external
application.
Implementation Tips
There are many steps when authenticating a user and application using OAuth. See “Authenticating Remote Access Application
OAuth” in the Salesforce.com online help.
112
Custom Cloud Remote Access Applications
Salesforce.com supports the OAuth protocol for authenticating Web applications that access data in a Salesforce.com instance.
OAuth is an open protocol that allows secure authentication and is often described as the valet key of software access. A valet
key only allows access to certain features of your car: you cannot open the trunk or glove compartment using a valet key.
Similarly, OAuth limits access to a software application, without having to hand out the user's username and password.
Note: Salesforce.com currently supports OAuth version 1.0.A.
For more information on the OAuth standard, see the OAuth.net documentation.
A remote access application is an application external to Salesforce.com that uses the OAuth protocol to verify both the
Salesforce.com user and the external application.
Tip: OAuth does not automatically limit access to a user's Salesforce.com data. Limits to data access are either specified
by the user's profile or by the package access controls of a remote access application that is included in a managed
package.
For more information on terminology, see “Remote Access Applications and OAuth Terminology” in the Salesforce.com
online help.
The following is the general flow for using a remote access application with Salesforce.com:
1. A developer uses the remote access pages in Salesforce.com (Setup ➤ Develop ➤ Remote Access) to define a remote
access application.
In this example, the remote access application is a Google gadget, which uses data that already exists in Salesforce.com.
2. The developer uses the generated consumer secret and key from the remote access application detail page and develops
the Google gadget using the consumer secret and key and the OAuth library.
3. A user starts to use the Google gadget application.
4. The user performs an action with the Google gadget that requires access to Salesforce.com data.
5. The user is presented with a login to Salesforce.com.
6. The Remote Access Authorization page displays. It verifies if the user wants to grant the remote access application, that
is, the Google gadget, access to the user's Salesforce.com data.
7. If the user approves access, the approval page displays. The approval page may contain a verification code that the user
must enter in the Google gadget application.
113
Custom Cloud Remote Access Applications
8. If the user denies access, the user is prompted to log out of Salesforce.com.
9. After a user has granted access to a remote access application, he or she can revoke that access by clicking Setup ➤ My
Personal Information ➤ Personal Information and clicking Deny next to the name of the application in the Remote
Access related list.
Use the remote access pages to define remote access applications that can access a Salesforce.com instance.
To define a remote access application:
1. Click Setup ➤ Develop ➤ Remote Access, and click New. Alternatively, click Setup ➤ Create ➤ Packages, click the
name of the managed package, then click New in the Remote Access section.
Important: If you create a remote access application from a package, it is automatically included in that package.
Once you add a remote access application to a package, you cannot remove it from the package. The only way to
remove a remote access application from a package is to delete it from your organization.
2. Specify the name of the application. This is required. Salesforce.com recommends that this name match the name of the
actual application.
3. Specify the Callback URL, which is the URL that the user should be returned to after they approve access for the application.
If Callback URL is defined, the oauth_callback parameter must be set to the oob when trying to get the request token.
This URL must be secure (uses https).
4. If the application has a specific logo, you can specify that using the Logo Image URL. The URL must be secure (uses
https).
5. If appropriate, specify the Contact Phone and Contact Email.
6. Enter a description of the application. When a user grants access to an application, this description displays.
7. If you used Setup ➤ Develop ➤ Remote Access to create this remote access application, you can select a managed package
to include this remote access application in.
Important: If you create a remote access application and do not include it in a managed package, you can never
add it later.
8. Click Save.
When you save the remote access definition, the consumer key and consumer secret are automatically generated. The consumer
key and consumer secret are available globally in all Salesforce.com instances. The consumer should store these in their
application. The keys are used in authenticating a user using the remote access application.
114
Custom Cloud Remote Access Applications
Note: Even if you change the name of the application, the consumer key and consumer secret are not regenerated.
AccessToken
A value used by the consumer to gain access to protected resources on behalf of the user, instead of using the user’s
Salesforce.com credentials.
Consumer
A website or application that uses OAuth to authenticate both the Salesforce.com user as well as the application on the
user's behalf.
Consumer Key
A value used by the consumer to identify itself to Salesforce.com.
Consumer Secret
A secret used by the consumer to establish ownership of the consumer key.
Nonce
A number, often a random number, used during authentication to ensure that requests cannot be reused.
RequestToken
A value used by the consumer to obtain authorization from the user, and exchanged for an AccessToken.
Service Provider
A Web application that allows access using OAuth. This is your Salesforce.com instance after remote access has been
enabled.
TokenSecret
A secret used by the consumer to establish ownership of a given token, both for RequestTokens and AccessTokens.
User
An individual who has a Salesforce.com login.
115
Custom Cloud Single Sign-On for Portals
When defining a remote access application, take the following into consideration when deciding whether to package remote
access applications:
Single sign-on enables the users of your organization to sign-on to Salesforce.com once, rather than several times for each
product that has been integrated with Salesforce.com.
As of Winter '10, single sign-on has been enabled for both Customer Portals and partner portals.
Note: Single sign-on for portals will not be available until after October 12, 2009.
116
Custom Cloud Single Sign-On for Portals
Single sign-on is a process that allows network users to access all authorized network resources without having to log in
separately to each resource. Single sign-on allows you to validate usernames and passwords against your corporate user database
or other client application rather than having separate user passwords managed by Salesforce.com.
You can set up Customer Portals and partner portals to use single sign-on, so that a customer only has to login once.
To enable single sign-on for portals:
a. Click Setup ➤ Company Profile ➤ Company Information and copy the ID located in the Salesforce.com
Organization ID.
b. For Customer Portals, click Setup ➤ Customize ➤ Customer Portal ➤ Settings, click the name of the Customer
Portal, and copy the ID located in the Portal ID.
For partner portals, click Setup ➤ Customize ➤ Partners ➤ Settings, click the name of the partner portal, and copy
the ID located in the salesforce.com Portal ID.
117
Custom Cloud Single Sign-On for Portals
<saml:AttributeStatement>
<saml:Attribute Name="portal_id">
<saml:AttributeValue xsi:type=“xs:anyType”>060D00000000SHZ</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="organization_id">
<saml:AttributeValue xsi:type="xs:anyType">00DD0000000F7P5</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
The following is a complete SAML assertion statement. The organization is using federated sign-on, which is included in an
attribute, not in the subject.
<samlp:Response ID="_f97faa927f54ab2c1fef230eee27cba21245264205456"
IssueInstant="2009-06-17T18:43:25.456Z" Version="2.0">
<saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
https://www.salesforce.com</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ID="_f690da2480a8df7fcc1cbee5dc67dbbb1245264205456"
IssueInstant="2009-06-17T18:43:25.456Z" Version="2.0">
<saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
https://www.salesforce.com</saml:Issuer>
<saml:Subject>
<saml:NameID
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">null</saml:NameID>
−
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2009-06-17T18:48:25.456Z"
Recipient="https://www.salesforce.com/?saml=02HKiPoin4f49GRMsOdFmhTgi_0nR7BBAflopdnD3gtixujECWpxr9klAw"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2009-06-17T18:43:25.456Z"
NotOnOrAfter="2009-06-17T18:48:25.456Z">
<saml:AudienceRestriction>
<saml:Audience>https://saml.salesforce.com</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2009-06-17T18:43:25.456Z">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
118
Custom Cloud Force.com Platform Documentation Enhancements
xsi:type=“xs:string”>saml_portal_user_federation_id</saml:AttributeValue>
<saml:AttributeValue xsi:type=“xs:string”>SomeOtherValue</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="portal_id">
<saml:AttributeValue xsi:type="xs:anyType">060D00000000SHZ</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="organization_id">
<saml:AttributeValue xsi:type=“xs:anyType”>00DD0000000F7Z5</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="ssostartpage"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue xsi:type="xs:anyType">
http://www.salesforce.com/qa/security/saml/saml20-gen.jsp
</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="logouturl"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
http://www.salesforce.com/qa/security/del_auth/SsoLogoutPage.html
</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
functionality for syntactically correct code samples. To use clipboard copy, click the Copy this code? icon ( ) above
any syntactically correct code sample. You can then paste the code sample into the editor of your choice with all formatting
intact.
Clipboard copy relies on Flash 10 to render appropriately in all browsers that Salesforce.com supports. If you don't have
Flash installed, the icon won't display.
119
Custom Cloud Additional Custom Cloud Enhancements
To limit your search results to just the articles and reference guides in the Technical Library, first click the Developer
Force Search icon ( ) to display the Search page, then limit your results with the drop-down filter list.
For access to all Force.com platform documentation, visit the Developer Force Documentation page.
You asked for it! This enhancement is an idea from the IdeaExchange.
Field-level help is custom text that explains the purpose and function of a field. Users can view field-level help by hovering
over the help icon next to fields on detail and edit pages.
Before Winter '10, field-level help was only available for custom fields. Now, you can create field-level help for standard fields
as well.
To define field-level help:
1. Select the field for which you want to define custom help text:
• For standard objects, click Setup ➤ Customize, select the appropriate object from the Customize menu, and click
Fields.
• For custom objects, click Setup ➤ Create ➤ Objects, and select one of the custom objects in the list.
120
Custom Cloud Additional Custom Cloud Enhancements
In Winter '10, the “Disable Outbound Messages” permission has been renamed “Send Outbound Messages” and its value has
been inverted. In profiles where “Disable Outbound Messages” was enabled, “Send Outbound Messages” is now disabled, and
vice versa. For organizations that use workflow outbound messaging, this change now allows users to send outbound messages.
The Force.com API versions 16.0 and earlier are still compatible with “Disable Outbound Messages,” which is called
PermissionsDisableNotifications in the API.The API versions 17.0 and higher are compatible with “Send Outbound Messages,”
which is called PermissionsEnableNotifications in the API. The API profile setting PermissionsEnableNotifications replaces
the previous API profile setting PermissionsDisableNotifications. If you port your old code to new, make sure that this
permission is not enabled to ensure that endless loops won't occur.
Package Anything
You asked for it! This enhancement is from ideas on the IdeaExchange about page layouts, list views, validation
rules, and record types.
Available in: Contact Manager, Group, Professional, Enterprise, Unlimited, and Developer Editions
Profile Change Tracking for Apex Class Access and Visualforce Page Access
With Winter '10, details on changes to Apex class access and Visualforce page access are tracked in the setup audit trail
history.
To view the setup audit trail history, click Setup ➤ Security Controls ➤ View Setup Audit Trail.
121
Custom Cloud Additional Custom Cloud Enhancements
Ukrainian (uk) and Vietnamese (vi) are now available as end user languages for Salesforce.com upon request.
Users can update their personal language settings as follows:
1. Click Setup ➤ My Personal Information ➤ Personal Information.
2. Click Edit.
3. Select a language from the Language picklist.
4. Click Save.
Visualforce Enhancements
Available in: Contact Manager, Group, Professional, Enterprise, Unlimited, and Developer Editions
Winter '10 includes the following new feature for Visualforce. For detailed information, see the Visualforce Developer's Guide.
New messaging:attachment component attributes:
Workflow Enhancements
122