New Opportunity Page Layout – With Highlights Panel!

February 18, 2010 · Filed Under Configuration, New Features, Spring 10, salesforce.com · 5 Comments 

Yesterday, I enabled the new Opportunity page layout in my Developer Spring ‘10 Preview org, and it took a few steps, so I thought I’d share them with you.

Firstly, you’ll need to contact salesforce.com to get this feature enabled.

Then be patient. It takes a minute or two for the update to propagate. Clearly, something was churning in the Force.com platform background!

Now we’ll navigate NOT to the Setup | Customize | User Interface screen (where this should be enabled). Instead, we’ll go to the Opportunity Page Layout screen.

Follow the cool prompts. They make it so easy, a … well, you know what I mean.

Step 1: Enable the Highlights Panel

Step 1: Enable the Highlights Panel

Opportunity Layout Setup page

Opportunity Layout Setup

Step 2: Edit the Page Layout

Step 2: Edit the Page Layout

Choose Fields to Display

Choose Fields to Display

Note: You can only show fields in the Highlights Panel if they are in the page layout. (I have a feeling this has to do with Professional Edition or printable layouts, but I’m just guessing.)

Once you’ve done this for each page layout, click on the big button.

Confirmation

Confirmation - You are (mostly) done!

At this point, each user can enable the bar. I have no idea why the admin can’t just force this on all users – or maybe I missed something – but it seems to be an opt-in feature.

Enable User Opt-In

Step 3: Enable User Opt-In

Here’s the link to enable the feature. Of course, you may wish to watch a video as well!

The link to enable this setting

The link to enable this setting

And here it is!

The new layout!

The new layout!


View from the bottom of the page

Return to top from the bottom of the page

It’s interesting that if you have this enabled, certain user interface settings (yes, at Setup | Customize | User Interface) cannot be changed:

When this is enabled, you cannot turn off two settings

When this is enabled, you cannot turn off two settings

Here’s my prediction: We will start to see two major mistakes during Salesforce demos:

  1. We will continue to see the link asking if we want more information on inline editing (after more than a year, it’s time to turn that off, people).
  2. At the top of the Opportunity detail page, we will see this link.

And I will continue to think less of all demonstrators who make these mistakes.

Happy Spring 2010!

Get Documents and Attachments out of Salesforce

February 8, 2010 · Filed Under Configuration, Spring 10, Tips and Tricks, salesforce.com · 3 Comments 

As Content will be included in all Salesforce licenses (for completeness, I'll add 'to some degree') with the Spring '10 release, orgs will be faced with the daunting prospect of getting their documents and attachments out of Salesforce and into Content.

I had this problem when Content was first released and I was asked to be one of the first SysAds to use it. At the time, we used Solution 1 (below), but since then, other products have been released to help with this.

Why is it even an issue?

  • Surely we can download each file? Yes, but who wants to?
  • Can't we do a Data Export and then upload those to Content? Yes, but all the files are renamed with their 15-character Ids, making renaming them all-but-impossible.

salesforce.com and DreamFactory to the rescue!

Solution 1

Summary: Use a script to rename all exported files. A (wonderful!) salesforce.com employee, Nick Marcantonio, wrote a Perl script to perform the transformation. Here it is, in all its glory:
# Nick Marcantonio
# nmarcantonio at salesforce.com
# 08/07

$file = 'Attachment.csv';

open (F, $file) || die ("Could not open $file!");

$line = <F>; #read first line which is nothing but column headers
while ($line = <F>)
{
  ($id,$name) = split ',', $line;
  chomp($id);
  $id =~ s/\"//g;
  chomp($name);
  $name =~ s/\"//g;
  
  #print "$id : $name\n";
  
  $result = rename($id, $name);
  #print "$result\n";
}

close (F);
The instructions:
If you've done a data export you've noticed that all attachments are placed in the Attachments subfolder and named with their salesforce ID, not the actual file name or extension. One must then consult the Attachment.csv file included in the data export to find the name associated with the ID and rename the file. Attached to this solution is a Perl script that will rename all of the exported attachments to their proper names. Please follow these steps to run this:

1. Perform a data export and unzip the resulting zip file
2. Launch the data loader and export from the Attachments table ONLY the Id and Name column. This file must be named Attachment.csv.
3. Install ActivePerl. This will allow perl scripts to be run on a Windows machine. ActivePerl is available here (http://www.activestate.com/activeperl).
4. Copy the Attachment.csv file and the attached AttachmentParser.pl file to the Attachments subdirectory of the data export.
5. Double-click on AttachmentParser.pl.

All of the files named with their salesforce IDs will be renamed with their proper names and file extensions.

(This solution will work for documents as well. Follow the same procedure and be sure to name the extract from the Documents table Attachment.csv) 

Note: This will not preserve folders, as far as I know. You may be able to recreate this by exporting the Folder table and doing some work on that, as the Document table does include a FolderId column.

A heartfelt thank-you to Nick Marcantonio for his help!

Solution 2

Install DreamFactory's FREE DreamTeam Document Management application from the AppExchange to drag-and-drop your Documents to your desktop.
This doesn't work with Attachments, though, so you may need to use another method for them.

Please let us know how it goes - good luck and enjoy Content!

Filtered Lookups, Validation Rules, and Order of Execution

Reading the cheatsheet for Filtered Lookup (beta), I noticed an interesting line:

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.

The implications for this are massive. Let's explore two examples:

Example 1: Filter as Validation Rule from Parent Record

  • We create a lookup on a Child object to Parent.
  • We filter the lookup to EXCLUDE Parent.Status = 'Closed' (Parent.Status is only Open or Closed.)
  • We can edit the Child records as long as the Parent Status is not Closed.
  • When Parent.Status is changed to Closed, existing related Child records are not affected...
  • BUT if we attempt to edit a Child when the Parent is Closed, Force.com will throw an error (which we can customize) beause that the Lookup is invalid.
  • (and clearly we cannot add new Child records either)

Conclusion: Thus, Filtered Lookups act much like Validation Rules. A quick experiment shows that Filtered Lookup errors actually fire before Validation Rules.

Example 2: Filter as Validation Rule on Roll-Up Summary (from Child Record) - what the line above was referencing

  • Use the above example, but change the lookup to a master-detail relationship
  • Create a Roll-Up Summary field to count all child records
  • Prevent saving more than 10 child records for one parent record

Here, we have triggered a filter error without touching a parent record, yet we throw an error based on a value on the parent record.

This second example is significant because we could already prevent more than 10 child records from saving, but doing so required a Roll-Up Summary field on the parent object AND a Validation Rule on the child object. Now we can replace the Validation Rule with the Lookup Filter, though we still need the Roll-Up Summary field. Whether or not this simplifies things is definitely up for debate...

Conclusion

This is a very powerful feature! Thanks to salesforce.com for rolling it out, even in beta form.

Real world example: The above example would be great for Time Sheet Entry and Time Sheet Header objects, as they would create, in effect, a validation rule on the Header record preventing editing of any child records. Awesome!

For further reading, check Salesforce Help's Lookup Filters examples.

Preparing a New Org

September 16, 2009 · Filed Under Configuration, Native Application, Tips and Tricks, salesforce.com · 7 Comments 

With the impending arrival of the Winter 2010 (aka 162 or Winter'10) edition of Salesforce CRM, as with every other release, comes a prerelease org. (You can get one at https://www.salesforce.com/form/trial/prerelease_winter10.jsp.)

Every time one encounters a fresh org, there are maintenance tasks to perform. I usually go through an org (whether a Developer Edition org or a Prerelease version) and do the same tasks, generally in no particular order. This time, however, I wrote down what I did as I did it. Looking at the list, it's hardly in any "best practices" order at all - it's just how I did it.

There's no need to follow every step, and it is not a complete list of all possibilities, but this should give you some idea of the possibilities and available tweaks: (*** indicates some of the new features in WInter '10)

  1. Save login with 1Password/Roboform
  2. Reset (Set) Security Token
  3. Administration Setup | Security Controls
    • Session time 8 hrs
    • Passwords never expire
  4. Create Record Types (and Business Processes) for Lead, Opportunity, Case
  5. (Campaigns were not enabled in this prerelease org) - would have configured them here, similarly
  6. Activities section: Calendar link on sidebar
  7. Download latest versions of Connect for Outlook, Office Edition
  8. Opportunities:
    • Enable Similar Opportunities
    • Enable Opportunity Teams
  9. Create Account Master Record Type
  10. Enable Account Teams
  11. Create Contact Master Record Type
    • Note: Asked to add to page layout. Not asked for Opportunities.
  12. Enable Case Teams
  13. Enable Public Solutions
  14. Solutions:
    • Enable Solution Browsing
    • Enable Solution HTML
    • Could have created a Solution Process & Record Type
    • Did not enable multilingual solutions
  15. Enable Self-Service
  16. Enable Web-to-Case
  17. Create default Owner, etc (auto prompted)
  18. Enable PRM and Partner Portal (though have no licenses)
  19. Salesforce to Salesforce
    • Enabled S2S
    • Set up S2S Connection Finder ***
    • Added fields to page layout - Kept read-only for all profiles except System Administrator
    • Enable Public & Private Tags
  20. Enable Console for all Profiles
  21. Search Settings - Enable Enhanced Lookup & Auto-Complete
  22. User Interface
    • Separate loading of related lists
    • Spell Checker on Tasks & Events
    • Collapsible Sidebar
    • Custom Sidebar on all Pages
    • Enhanced Profile Management ***
  23. Set myself as default Workflow User
  24. Looked at Develop | Custom Settings ***
  25. Created a Default Queue and added myself
  26. Set all Sharing Rules to Private
  27. Update Home Page to the way I like it
    • Order of wide section (top down): Calendar, Tasks, Items to Approve, Dashboard
    • No changes to narrow section

Other things that may be possible in other orgs:

  • Enable Customer Portal
  • Customize Campaigns
  • Set up Sites

Again, this is not meant to be a complete list. Also, it is not intended to be a how-to; for more information you may search the Help link at the top of every org page, check Salesforce Community, or Developer Force.

Happy configuring!

Standard Checkbox Images

May 11, 2009 · Filed Under Configuration, salesforce.com · 4 Comments 
One of Salesforce CRM's coolest features from a "bright shiny object" standpoint (i.e. something that aids productivity but also looks flashy) is the image formula field. Jamie Grenney first wrote about this a while ago, and his pdf and sample images from the Salesforce built-in library are available on the community site.
Sometimes, however, we want something simple. Sometimes we want to create a formula field that displays a simple checkbox (or an empty box). This is currently not possible, but has been suggested as a Salesforce Idea.

Until that is built into the platform, feel free to use these two images in an image formula field (storing them in the documents folder):

true 

false 

Or download this zip file and put it into a static resource for use in a Visualforce page.

Next Page »