<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>X-Squared On-Demand &#187; Editions</title>
	<atom:link href="http://www.x2od.com/cat/salesforce/editions/feed" rel="self" type="application/rss+xml" />
	<link>http://www.x2od.com</link>
	<description>Salesforce Configuration, Administration, and Development</description>
	<lastBuildDate>Fri, 11 Jun 2010 16:30:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Extended NA1 Maintenance Next Weekend (3/20)</title>
		<link>http://www.x2od.com/2010/03/13/extended-na1-maintenance.html</link>
		<comments>http://www.x2od.com/2010/03/13/extended-na1-maintenance.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 21:24:30 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Spring 10]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=999</guid>
		<description><![CDATA[Next weekend, March 20, 2010, Salesforce NA1 will be down for an extended (8-hour) maintenance window - the longest in memory - from 7pm 3/20 to 3am 3/21 (All times PST). Overlapping this is another 8-hour window for NA0 (SSL) starting two hours earlier. Also starting at 7pm PST, EU0 (EMEA) will be down for [...]]]></description>
			<content:encoded><![CDATA[<p>Next weekend, March 20, 2010, Salesforce NA1 will be down for an extended (<b>8-hour</b>) maintenance window - the longest in memory - from 7pm 3/20
to 3am 3/21 (All times PST). </p> 
<p>Overlapping this is another 8-hour window for NA0 (SSL) starting two hours earlier.</p> 
<p>Also starting at 7pm PST, EU0 (EMEA) will be down for 2.5 hours. </p> 
<p>All other instances will be down for 30 minutes, from 9pm PST.</p> 
<p>As the email from salesforce.com explains:</p>
<table width="575px"> <tbody> <tr> <td><span style="font-family: Tahoma;"><span style="font-size: smaller;"><img
src="https://a248.e.akamai.net/f/248/25855/14d/ig.rsys1.net/responsysimages/sfc/__RS_CP__/new_header.jpg" alt="" border="0" width="575px"></span></span></td> </tr>
<tr> <td><span style="font-family: Tahoma;"><span style="font-size: smaller;">&nbsp;</span></span></td> </tr> <tr> <td valign="top">

 <span style="font-family: Tahoma;"><span style="font-size: smaller;"> <p>Dear Salesforce Administrator,</p> </span></span><span style="font-size:
smaller;">

 </span><span style="font-family: Tahoma;"><span style="font-size: x-small;">

 </span></span>

 <span style="font-family: Tahoma;"><span style="font-size: smaller;"> <p>At <a href="http://salesforce.com" target="_blank">salesforce.com</a>, customer
success through system availability and reliability is our top priority. As part of our ongoing plan to deliver high availability and reliability, we are
enhancing our service infrastructure on our NA1 instance.</p> </span></span> <span style="font-family: Tahoma;"><span style="font-size: x-small;">

 </span></span> <p><span style="font-family: Tahoma;"><span style="font-size: smaller;">Please be aware that <a
href="http://salesforce.com" target="_blank">salesforce.com</a> will be performing scheduled maintenance <em>that will extend beyond standard system
maintenance windows</em>. The current scheduled window is:<br> </span></span> <span style="font-family: Tahoma;"><span style="font-size:
smaller;"></span></span><span style="font-family: Tahoma;"></span>

 </p> <p class="MsoNormal"><span style="font-family: Tahoma;"><span style="font-size: smaller;"><b>Saturday, March 20th, 2010 from 7:00pm PST to Sunday,
March 21<sup>st</sup> at 3:00am PST </b></span></span><span style="font-size: 10pt;"></span></p>

 <span style="font-family: Tahoma;"><span style="font-size: smaller;"> During this time, the <a href="http://salesforce.com"
target="_blank">salesforce.com</a> NA1 service will be unavailable. Users attempting to access the service during this time will be presented with a
scheduled maintenance notification page. </span></span> <span style="font-family: Tahoma;"><span style="font-size: smaller;"> <p>We appreciate your
patience during this maintenance window.</p>

 </span></span><span style="font-family: Tahoma;"><span style="font-size: x-small;">

 </span></span>

 <span style="font-family: Tahoma;"><span style="font-size: smaller;"> <p>Best regards,<br> -<a href="http://salesforce.com"
target="_blank">salesforce.com</a> Support</p> </span></span><span style="font-size: smaller;">

 </span><span style="font-family: Tahoma;"></span></td>

 </tr> 
 <tr> <td
align="center" bgcolor="#ffffff" height="34"><span style="font-family: Tahoma;"><span style="font-size: smaller;"><span style="color: rgb(102, 102,
102);"><br> Copyright 2000-2010 <a href="http://salesforce.com" target="_blank">salesforce.com</a> - All rights reserved - Various trademarks held by
their respective owners<br>

 Salesforce.com, One Market Street, Suite 300, San Francisco, CA 94105</span></span></span></td> </tr> </tbody> </table>



<div leftmargin="0" topmargin="0" alink="#003366" bgcolor="#ffffff" link="#003366" marginheight="0" marginwidth="0" text="#000000" vlink="#666666">

    <!--== System Status Content ==-->
    <table bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="575">
        <tr>
            <td width="575" style="padding-left:15px;padding-top:15px;padding-right:15px;padding-bottom:15px;">
                <table border="0" cellpadding="0" cellspacing="0">
                    <tr>
                        <td valign="top">

                            <table border="0" cellpadding="0" cellspacing="0">
                                <tbody>
                                    <tr>
                                        <td><img src="http://trust.salesforce.com/opencms/status-data/img/headerSchedMaint.gif" alt="" width="575px"></td>
                                    </tr>
                                    <tr>
                                        <td style="border-left: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding: 0px 0px 0px 0px; width: 575px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
                                            <center>
                                                
                                                <table border="0" cellspacing="0" cellpadding="0" width="100%">

                                                    
                                                    <tr>
                                                        <td width="10%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; ">
                                                            <b>NA0 (SSL)
                                                            </b>
                                                        </td>
                                                        <td width="26%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; ">
                                                            March 20, 5:00 pm PDT&nbsp;-<br/>March 21, 1:00 am PDT
                                                        </td>

                                                        <td style="border-bottom: 1px solid rgb(255, 204, 0); padding:5px; ">

                                                            The NA0 instance will have maintenance performed at this time. The instance will be unavailable for the duration of the maintenance.
                                                        </td>
                                                    </tr>
                                                    
                                                    <tr>
                                                        <td width="13%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">
                                                            <b>EU0 (EMEA)
                                                            </b>
                                                        </td>
                                                        <td width="25%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">
                                                            March 20, 7:00 pm PDT&nbsp;-<br/>March 20, 9:30 pm PDT
                                                        </td>

                                                        <td style="border-bottom: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">
                                                            The EU0 instance will have maintenance performed at this time. The instance will be unavailable for the duration of the maintenance.
                                                        </td>
                                                    </tr>
                                                    
                                                    <tr>
                                                        <td width="13%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; ">
                                                            <b>NA1
                                                            </b>
                                                        </td>

                                                        <td width="25%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; ">
                                                            March 20, 7:00 pm PDT&nbsp;-<br/>March 21, 3:00 am PDT
                                                        </td>

                                                        <td style="border-bottom: 1px solid rgb(255, 204, 0); padding:5px; ">
                                                            The NA1 instance will have maintenance performed at this time. The instance will be unavailable for the duration of the maintenance.
                                                        </td>
                                                    </tr>
                                                    
                                                    <tr>
                                                        <td width="13%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">

                                                            <b>All instances
                                                            </b>
                                                        </td>
                                                        <td width="25%"
                                                            style="border-bottom: 1px solid rgb(255, 204, 0); border-right: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">
                                                            March 20, 9:00 pm PDT&nbsp;-<br/>March 20, 9:30 pm PDT
                                                        </td>

                                                        <td style="border-bottom: 1px solid rgb(255, 204, 0); padding:5px; background: rgb(243, 243, 236) none repeat scroll 0%;">
                                                            The Salesforce.com Technology will be performing maintenance at this time. During this time all instances will be unavailable for the duration of the maintenance.
                                                        </td>

                                                    </tr>
                                                    
                                                </table>
                                                
                                            </center>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </td>
                    </tr>

                </table>
            </td>
        </tr>
    </table>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2010/03/13/extended-na1-maintenance.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Opportunity Page Layout &#8211; With Highlights Panel!</title>
		<link>http://www.x2od.com/2010/02/18/new-opportunity-page-layout-with-highlights-panel.html</link>
		<comments>http://www.x2od.com/2010/02/18/new-opportunity-page-layout-with-highlights-panel.html#comments</comments>
		<pubDate>Thu, 18 Feb 2010 17:30:42 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Spring 10]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Force.com Builder]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=963</guid>
		<description><![CDATA[Yesterday, I enabled the new Opportunity page layout in my Developer Spring &#8217;10 Preview org, and it took a few steps, so I thought I&#8217;d share them with you. Firstly, you&#8217;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, [...]]]></description>
			<content:encoded><![CDATA[<p>
      Yesterday, I enabled the new Opportunity page layout in my Developer Spring &#8217;10 Preview org, and it took a few steps, so I thought I&#8217;d share them with you.</p>
<p>
      Firstly, you&#8217;ll need to contact salesforce.com to get this feature enabled.
    </p>
<p>
      Then be patient. It takes a minute or two for the update to propagate. Clearly, something was churning in the Force.com platform background!
    </p>
<p>
      Now we&#8217;ll navigate NOT to the <a href="https://prerelna1.pre.salesforce.com/ui/setup/org/UserInterfaceUI?setupid=UserInterface&#038;retURL=%2Fui%2Fsetup%2FSetup%3Fsetupid%3DCustomize">Setup | Customize | User Interface</a> screen (where this should be enabled). Instead, we&#8217;ll go to the <a href="https://prerelna1.pre.salesforce.com/ui/setup/layout/PageLayouts?type=Opportunity&#038;setupid=OpportunityLayouts&#038;retURL=%2Fui%2Fsetup%2FSetup%3Fsetupid%3DOpportunity">Opportunity Page Layout</a> screen.</p>
<p>
      Follow the cool prompts. They make it so easy, a &#8230; well, you know what I mean. </p>
<div id="attachment_975" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-0.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-0-300x214.png" alt="Step 1: Enable the Highlights Panel" title="Highlights Panel 0" width="300" height="214" class="size-medium wp-image-975"></a><p class="wp-caption-text">Step 1: Enable the Highlights Panel</p></div> <div id="attachment_970" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-1.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-1-300x194.png" alt="Opportunity Layout Setup page" title="Highlights Panel 1" width="300" height="194" class="size-medium wp-image-970"></a><p class="wp-caption-text">Opportunity Layout Setup</p></div> <div id="attachment_976" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-1.5.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-1.5-300x100.png" alt="Step 2: Edit the Page Layout" title="Highlights Panel 1-5" width="300" height="100" class="size-medium wp-image-976"></a><p class="wp-caption-text">Step 2: Edit the Page Layout</p></div> <div id="attachment_965" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-2.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-2-300x172.png" alt="Choose Fields to Display" title="Highlights Panel 2" width="300" height="172" class="size-medium wp-image-965"></a><p class="wp-caption-text">Choose Fields to Display</p></div>
<p>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&#8217;m just guessing.)</p>
<p>Once you&#8217;ve done this for each page layout, click on the big button. </p>
<div id="attachment_966" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-3.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-3-300x196.png" alt="Confirmation" title="Highlights Panel 3" width="300" height="196" class="size-medium wp-image-966"></a><p class="wp-caption-text">Confirmation - You are (mostly) done!</p></div>
<p>At this point, each user can enable the bar. I have no idea why the admin can&#8217;t just force this on all users &#8211; or maybe I missed something &#8211; but it seems to be an opt-in feature.</p>
<div id="attachment_993" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-8.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-8-300x232.png" alt="Enable User Opt-In" title="Highlights Panel 8" width="300" height="232" class="size-medium wp-image-993" /></a><p class="wp-caption-text">Step 3: Enable User Opt-In</p></div>
<p>Here&#8217;s the link to enable the feature.  Of course, you may wish to watch a video as well!</p>
<div id="attachment_967" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-4.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-4-300x111.png" alt="The link to enable this setting" title="Highlights Panel 4" width="300" height="111" class="size-medium wp-image-967"></a><p class="wp-caption-text">The link to enable this setting</p></div>
<p>And here it is!</p>
<div id="attachment_968" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-5.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-5-300x126.png" alt="The new layout!" title="Highlights Panel 5" width="300" height="126" class="size-medium wp-image-968"></a><p class="wp-caption-text">The new layout!</p></div><br />
<div id="attachment_969" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-6.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-6-300x185.png" alt="View from the bottom of the page" title="Highlights Panel 6" width="300" height="185" class="size-medium wp-image-969"></a><p class="wp-caption-text">Return to top from the bottom of the page</p></div>
<p>It&#8217;s interesting that if you have this enabled, certain user interface settings (yes, at Setup | Customize | User Interface) cannot be changed:  </p>
<div id="attachment_971" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/Highlights-Panel-7.png"><img src="http://www.x2od.com/wp/uploads/Highlights-Panel-7-300x299.png" alt="When this is enabled, you cannot turn off two settings" title="Highlights Panel 7" width="300" height="299" class="size-medium wp-image-971"></a><p class="wp-caption-text">When this is enabled, you cannot turn off two settings</p></div>
<p>Here&#8217;s my prediction: We will start to see two major mistakes during Salesforce demos: </p>
<ol>
<li>We will continue to see the link asking if we want more information on inline editing (after more than a year, it&#8217;s time to turn that off, people).</li>
<li>At the top of the Opportunity detail page, we will see this link.</li>
</ol>
<p>And I will continue to think less of all demonstrators who make these mistakes.</p>
<p><strong>Happy Spring 2010!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2010/02/18/new-opportunity-page-layout-with-highlights-panel.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Get Documents and Attachments out of Salesforce</title>
		<link>http://www.x2od.com/2010/02/08/docs-and-attachs-out-of-salesforce.html</link>
		<comments>http://www.x2od.com/2010/02/08/docs-and-attachs-out-of-salesforce.html#comments</comments>
		<pubDate>Mon, 08 Feb 2010 19:16:03 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Spring 10]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[DreamFactory]]></category>
		<category><![CDATA[Force.com Builder]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=905</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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.</p>
<p>Why is it even an issue? </p>
<ul>
<li><em>Surely we can download each file?</em>  Yes, but who wants to?</li>
<li><em>Can't we do a Data Export and then upload those to Content?</em>  Yes, but all the files are renamed with their 15-character Ids, making renaming them all-but-impossible.</li>
</ul>
<br>
<strong>salesforce.com and DreamFactory to the rescue!</strong>
<h3>Solution 1</h3>
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:
<pre class="brush: perl;">
# Nick Marcantonio
# nmarcantonio at salesforce.com
# 08/07

$file = 'Attachment.csv';

open (F, $file) || die (&quot;Could not open $file!&quot;);

$line = &lt;F&gt;; #read first line which is nothing but column headers
while ($line = &lt;F&gt;)
{
  ($id,$name) = split ',', $line;
  chomp($id);
  $id =~ s/\&quot;//g;
  chomp($name);
  $name =~ s/\&quot;//g;
  
  #print &quot;$id : $name\n&quot;;
  
  $result = rename($id, $name);
  #print &quot;$result\n&quot;;
}

close (F);
</pre>
The instructions: 
<pre class="brush: plain;">
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) 
</pre>
<p>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.</p>
<p>A heartfelt thank-you to Nick Marcantonio for his help!</p>
<h3>Solution 2</h3>
<p>Install DreamFactory's FREE <a href="http://sites.force.com/appexchange/listingDetail?listingId=a0N30000001e1GkEAI">DreamTeam Document Management</a> application from the AppExchange to drag-and-drop your Documents to your desktop.  <br>
This doesn't work with Attachments, though, so you may need to use another method for them.</p>
<p>Please let us know how it goes - good luck and enjoy Content!</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2010/02/08/docs-and-attachs-out-of-salesforce.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Developer Library Released</title>
		<link>http://www.x2od.com/2009/11/19/new-developer-library-released.html</link>
		<comments>http://www.x2od.com/2009/11/19/new-developer-library-released.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:43:29 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Force.com Platform]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Visualforce]]></category>
		<category><![CDATA[Winter 10]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Dreamforce 2009]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=853</guid>
		<description><![CDATA[Today, Developer Force (http://developer.force.com) released its new library. Here are a few of them. All can be found at http://wiki.developerforce.com/index.php/Documentation. Workbook http://www.salesforce.com/us/developer/docs/workbook/index.htm Fundamentals http://www.salesforce.com/us/developer/docs/fundamentals/index.htm Cookbook http://www.salesforce.com/us/developer/docs/cookbook/index.htm Apex Advanced Code Example http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_shopping_cart_example.htm https://sites.secure.force.com/appexchange/listingDetail?listingId=a0N30000001saDCEAY And many more to come!]]></description>
			<content:encoded><![CDATA[<p>Today, Developer Force (<a href="http://developer.force.com">http://developer.force.com</a>) released its new library.  Here are a few of them.  All can be found at <a href="http://wiki.developerforce.com/index.php/Documentation">http://wiki.developerforce.com/index.php/Documentation</a>.</p>
<p>Workbook<br />
<a href="http://www.salesforce.com/us/developer/docs/workbook/index.htm">http://www.salesforce.com/us/developer/docs/workbook/index.htm</a></p>
<p>Fundamentals<br />
<a href="http://www.salesforce.com/us/developer/docs/fundamentals/index.htm">http://www.salesforce.com/us/developer/docs/fundamentals/index.htm</a></p>
<p>Cookbook<br />
<a href="http://www.salesforce.com/us/developer/docs/cookbook/index.htm">http://www.salesforce.com/us/developer/docs/cookbook/index.htm</a></p>
<p>Apex Advanced Code Example<br />
<a href="http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_shopping_cart_example.htm">http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_shopping_cart_example.htm</a><br />
<a href="https://sites.secure.force.com/appexchange/listingDetail?listingId=a0N30000001saDCEAY">https://sites.secure.force.com/appexchange/listingDetail?listingId=a0N30000001saDCEAY</a></p>
<p>And many more to come!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/11/19/new-developer-library-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtered Lookups, Validation Rules, and Order of Execution</title>
		<link>http://www.x2od.com/2009/10/06/filtered-lookups-validation-rules-and-order-of-execution.html</link>
		<comments>http://www.x2od.com/2009/10/06/filtered-lookups-validation-rules-and-order-of-execution.html#comments</comments>
		<pubDate>Tue, 06 Oct 2009 15:47:34 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Native Application]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Winter 10]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Force.com Builder]]></category>
		<category><![CDATA[Force.com Platform]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=771</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Reading the <a href="http://drop.io/ds/asset/filtered-lookup-cheatsheet-beta">cheatsheet for Filtered Lookup (beta)</a>, I noticed an interesting line:</p>
<p><code>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.</code></p>
<p>The implications for this are massive.  Let's explore two examples:</p>
<p><strong>Example 1: Filter as Validation Rule from Parent Record</strong></p>
<ul>
	<li>We create a lookup on a Child object to Parent.</li>
	<li>We filter the lookup to EXCLUDE Parent.Status = 'Closed' (Parent.Status is only Open or Closed.)</li>
	<li>We can edit the Child records as long as the Parent Status is not Closed.</li>
	<li>When Parent.Status is changed to Closed, existing related Child records are not affected...</li>
	<li><strong>BUT</strong> 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.</li>
	<li>(and clearly we cannot add new Child records either)</li>
</ul>
<p><strong>Conclusion:</strong> Thus, Filtered Lookups act much like Validation Rules.  A quick experiment shows that Filtered Lookup errors actually fire <u>before</u> Validation Rules.</p>
<p><strong>Example 2: Filter as Validation Rule on Roll-Up Summary (from Child Record)</strong> - what the line above was referencing</p>
<ul>
	<li>Use the above example, but change the lookup to a master-detail relationship</li>
	<li>Create a Roll-Up Summary field to count all child records</li>
	<li>Prevent saving more than 10 child records for one parent record</li>
</ul>
<p>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.</p>
<p>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...</p>

<h4>Conclusion</h4>
<p>This is a very powerful feature!  Thanks to salesforce.com for rolling it out, even in beta form.</p>
<p><strong>Real world example:</strong> 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!</p>
<P><em>For further reading, check <a href="https://na1.salesforce.com/help/doc/user_ed.jsp?loc=help&target=fields_lookup_filters_examples.htm">Salesforce Help's Lookup Filters examples</a>.</em></p>]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/10/06/filtered-lookups-validation-rules-and-order-of-execution.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pulling Code Out of Triggers</title>
		<link>http://www.x2od.com/2009/05/18/pulling-code-out-of-triggers.html</link>
		<comments>http://www.x2od.com/2009/05/18/pulling-code-out-of-triggers.html#comments</comments>
		<pubDate>Mon, 18 May 2009 17:00:41 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Summer 09]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Eclipse IDE]]></category>
		<category><![CDATA[Force.com Platform]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=583</guid>
		<description><![CDATA[To date, triggers have only been accessible on each object's setup page, leading to a lot of hunting for code within the Salesforce CRM application. Even in Eclipse, switching between the Class and Trigger folders for a given project can be a pain.

These pains can partially be alleviated by keeping all Apex code in one place--as Apex Classes.

Read more: http://www.x2od.com/?p=583&#038;preview=true#ixzz0FncHsqPw&#038;B]]></description>
			<content:encoded><![CDATA[<p>To date, triggers have only been accessible on each object's setup page, leading to a lot of hunting for code within the Salesforce CRM application.  Even in Eclipse, switching between the Class and Trigger folders for a given project can be a pain.</p>
<p>These pains can partially be alleviated by keeping all Apex code in one place--as Apex Classes.  With the addition of a consolidated trigger list in <a href="http://wiki.developerforce.com/index.php/Summer_09">Summer09</a>, some may feel that this post is superfluous, but consolidating code in one place, combined with the trigger list, will lead to a better development, debugging, and org administration experience.</p>

<p>First, here's a sample trigger (written by <a href="http://blog.jeffdouglas.com/2009/04/20/writing-bulk-triggers-for-salesforce">Jeff Douglas</a>):</p>
<pre class="brush: java;">
trigger AddOwnerColor on Account (before insert, before update) {

    // create a set of all the unique ownerIds
    Set&amp;lt;Id&amp;gt; ownerIds = new Set&amp;lt;Id&amp;gt;();
    for (Account a : Trigger.new)
        ownerIds.add(a.OwnerId);    

    // query for all the User records for the unique userIds in the records
    // create a map for a lookup / hash table for the user info
    Map&amp;lt;Id, User&amp;gt; owners = new Map&amp;lt;Id, User&amp;gt;([Select Favorite_Color__c from User Where Id in: ownerIds]);   

    // iterate over the list of records being processed in the trigger and
    // set the color before being inserted or updated
    for (Account a : Trigger.new)
        a.Owner_Favorite_Color__c = owners.get(a.OwnerId).Favorite_Color__c; 
}
</pre>
<p>Let's pull the code from the trigger into an Apex Class and leave a reference to that class & method in the trigger.  We need to pass the list Trigger.new as a parameter to the new class's method:<p>
The trigger:
<pre class="brush: java;">
trigger AddOwnerColor on Account (before insert, before update) {
AccountTriggers.AddOwnerColor(Trigger.new);
}
</pre>
And the class:
<pre class="brush: java;">
public class AccountTriggers {
    public static void AddOwnerColor(Account[] accts) {

    // create a set of all the unique ownerIds
    Set&amp;lt;Id&amp;gt; ownerIds = new Set&amp;lt;Id&amp;gt;();
    for (Account a : accts)
        ownerIds.add(a.OwnerId);    

    // query for all the User records for the unique userIds in the records
    // create a map for a lookup / hash table for the user info
    Map&amp;lt;Id, User&amp;gt; owners = new Map&amp;lt;Id, User&amp;gt;([Select Favorite_Color__c from User Where Id in: ownerIds]);   

    // iterate over the list of records being processed in the trigger and
    // set the color before being inserted or updated
    for (Account a : accts)
        a.Owner_Favorite_Color__c = owners.get(a.OwnerId).Favorite_Color__c; 
    } // close AddOwnerColor
}
</pre>
While this may seem trivial, it has a few advantages:<p>
<ul>
	<li>Easier to work in Eclipse (all code in the Classes section)</li>
	<li>Easier to write test code (can see tests and their associated methods in one place)</li>
	<li>Can promote code reuse by allowing other classes and triggers to call the same method.</li>
	<li>For those who like to include test code in the same class as the regular Class, this allows them to do so.</li>
</ul>
<p>There's a catch (there always is):
<p>You should comment into your Class which trigger is calling the class because otherwise, it is almost impossible to see at a glance where the code flows.  This will especially help when writing and debugging tests.
<p>Just a matter of personal style: It may be a good idea to write an Apex Class for each object's triggers (such as class AccountTriggers above).  Code reuse is still possible, but it can track where triggers were originally used.
<p>Happy coding!]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/05/18/pulling-code-out-of-triggers.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dashboards are Improved AND New in Summer 09</title>
		<link>http://www.x2od.com/2009/05/07/dashboards-are-improved-and-new-in-summer-09.html</link>
		<comments>http://www.x2od.com/2009/05/07/dashboards-are-improved-and-new-in-summer-09.html#comments</comments>
		<pubDate>Thu, 07 May 2009 21:54:18 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Native Application]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Summer 09]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Force.com Builder]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=509</guid>
		<description><![CDATA[The Summer09 prerelease orgs are here, so <a href="https://prerelwww.pre.salesforce.com/form/trial/prerelease_summer09.jsp">get yours now</a>!  Upon first look, something cool stood out and merits immediate posting:

Dashboards are improved.  The colors are more vivid, there's detail in the bars and pie chart wedges, and... pie charts can now display the actual and percentage values!]]></description>
			<content:encoded><![CDATA[<p>The Summer09 prerelease orgs are here, so <a href="https://prerelwww.pre.salesforce.com/form/trial/prerelease_summer09.jsp">get yours now</a>!  Upon first look, something cool stood out and merits immediate posting:</p>
<p>Dashboards are improved.  The colors are more vivid, there&#8217;s detail in the bars and pie chart wedges, and&#8230; pie charts can now display the actual <em>and</em> percentage values!</p>
<p>Dashboards are also new.  Visualforce pages can now be included as dashboard components, and there&#8217;s a new &#8220;Color-Blind Palette on Charts&#8221; setting for each user.  Here are before and after shots.</p>
<div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/dashboard-regular.jpg"><img src="http://www.x2od.com/wp/uploads/dashboard-regular-300x168.jpg" alt="Dashboard with regular color scheme" title="dashboard-regular" width="300" height="168" class="size-medium wp-image-507" /></a><p class="wp-caption-text">Salesforce dashboard with regular color scheme</p></div>
<div id="attachment_508" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.x2od.com/wp/uploads/dashboard-cb.jpg"><img src="http://www.x2od.com/wp/uploads/dashboard-cb-300x224.jpg" alt="Salesforce dashboard with color-blind/alternate color scheme" title="dashboard-cb" width="300" height="224" class="size-medium wp-image-508"  /></a><p class="wp-caption-text">Dashboard with color-blind/alternate color scheme</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/05/07/dashboards-are-improved-and-new-in-summer-09.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Developer Preview Releases for the Google Visualization API</title>
		<link>http://www.x2od.com/2009/02/21/google-developer-preview-visualization-api.html</link>
		<comments>http://www.x2od.com/2009/02/21/google-developer-preview-visualization-api.html#comments</comments>
		<pubDate>Sat, 21 Feb 2009 19:55:18 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Winter 09]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Dreamforce]]></category>
		<category><![CDATA[Eclipse IDE]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=373</guid>
		<description><![CDATA[Google has invited developers to participate in Developer Preview Releases for the Visualization API]]></description>
			<content:encoded><![CDATA[<p>Dreamforce 2008 brought many exciting new features from salesforce.com, both on the CRM/front-end side and the Force.com platform/back-end side.  One of the favorites was the announcement that salesforce.com had released a <a href="http://code.google.com/apis/visualization/">Google Visualization</a> <a href="http://developer.force.com/codeshare/apex/projectpage?id=a06300000030w9LAAQ">code share project</a>.  Google has invited developers to participate in <a href='http://google-code-updates.blogspot.com/2009/02/developer-preview-releases-for.html'>Developer Preview Releases for the Visualization API</a>.</p>
<p>It looks like a pretty cool way to work on <a href="http://wiki.apexdevnet.com/index.php/Force.com_Zillow_Mashup">RESTful</a> integrations while making some pretty pictures for your users.</p>
<p>For those unfamiliar with the Salesforce/Google Visualization toolkit, developer.force.com has a <a href="http://wiki.apexdevnet.com/index.php/Google_Visualizations">great introduction</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/02/21/google-developer-preview-visualization-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ultimate Visualforce Events Tab &#8211; Almost</title>
		<link>http://www.x2od.com/2009/01/05/the-ultimate-visualforce-events-tab-almos.html</link>
		<comments>http://www.x2od.com/2009/01/05/the-ultimate-visualforce-events-tab-almos.html#comments</comments>
		<pubDate>Mon, 05 Jan 2009 16:35:56 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Visualforce]]></category>
		<category><![CDATA[Winter 09]]></category>
		<category><![CDATA[salesforce.com]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[Force.com Builder]]></category>
		<category><![CDATA[Force.com Platform]]></category>
		<category><![CDATA[Salesforce.com]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=217</guid>
		<description><![CDATA[Check old blog posts, and you&#8217;ll see that I&#8217;ve been working on custom Events and Task tabs for a while now. A Task Visualforce tab (that mimics the Task box on the Home Page) is almost ready to come out, but the Events Enhanced List tab is (pretty much) here! This bears emphasizing: Enhanced Lists [...]]]></description>
			<content:encoded><![CDATA[Check old blog posts, and you&#8217;ll see that I&#8217;ve been working on custom Events and Task tabs for a while now.  A Task Visualforce tab (that mimics the Task box on the Home Page) is almost ready to come out, but the Events Enhanced List tab is (pretty much) here!<p>
This bears emphasizing: Enhanced Lists were initially not fully released for Activity/Event/Task objects, but are available now.  <p>
The code is ridiculously simple, thanks to the apex:EnhancedList Visualforce tag:
<pre class="brush: xml;">
&lt;apex:page standardController=&quot;Task&quot; &gt;
&lt;apex:enhancedList type=&quot;Activity&quot; height=&quot;800&quot; rowsPerPage=&quot;50&quot; /&gt;
&lt;/apex:page&gt;
</pre>

See?  Nothing to it!   Or so we thought.  There are some catches (there always are):<p>

<ol>
	<li>The original use-case required displaying all upcoming events without the header or sidebar.  We still cannot do this.  Quoting from the Winter &#8217;09 Release Notes: <em>The enhancedList component is not allowed on pages that have the attribute showHeader set to false.</em></li>
	<li>We&#8217;d like to create a custom tab for this page.  We create a Visualforce Tab, pick a custom icon, and show the page&#8230; and when I click on the tab, the enhanced list is displayed, but the tab is not highlighted.  Also, the custom icon I chose is not displayed.  How do we highlight our tab?<br />
After making the page, we make the tab as desribed above.  Then we RETURN to the page and add a tabstyle modifier to the apex:page tag, like so:

<pre class="brush: xml;">
&lt;apex:page standardController=&quot;Task&quot; tabstyle=&quot;enhanced_activities__tab&quot;&gt;
&lt;apex:enhancedList type=&quot;Activity&quot; height=&quot;800&quot; rowsPerPage=&quot;50&quot; /&gt;
&lt;/apex:page&gt;
</pre>
[Of course, change the tab name to whatever you choose.]<p>

Success?  Not quite.  There&#8217;s another catch:

</li>
	<li>The tab is highlighted (brown in our case), but the color and icon for the enhanced list are standard green/home.  <br />

Sadly, I have no workaround for this one. Sorry.</li>
</ol>

To repeat: Enhanced lists were not initially fully available for Events and Tasks, but now do support them.  <p>

Moving forward, consider if you want to create a particular enhanced list view instead of calling the standard enhanced Activity list as I have done here.  If you would prefer to make a custom enhanced list view, then you will need to add more code, but that is beyond the scope of this post.<p>

Enjoy!]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2009/01/05/the-ultimate-visualforce-events-tab-almos.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Force.com Sites Guest User Profile Permissions</title>
		<link>http://www.x2od.com/2008/12/22/sites-guest-profile.html</link>
		<comments>http://www.x2od.com/2008/12/22/sites-guest-profile.html#comments</comments>
		<pubDate>Mon, 22 Dec 2008 16:54:39 +0000</pubDate>
		<dc:creator>David Schach</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Application]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Winter 09]]></category>
		<category><![CDATA[Force.com Platform]]></category>
		<category><![CDATA[Sites]]></category>

		<guid isPermaLink="false">http://www.x2od.com/?p=294</guid>
		<description><![CDATA[I&#8217;m working on an event registration application for the Sites Developer Challenge, and it involves a validation that the registrant&#8217;s email exists in a Contact record. Remembering that Steve Andersen had run into some obstacles with Contact.Email visibility, I decided to check the guest profile for Contact Field Level Security. Here&#8217;s what I found: If [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on an event registration application for the <a href="http://developer.force.com/developerchallenge">Sites Developer Challenge</a>, and it involves a validation that the registrant&#8217;s email exists in a Contact record.  Remembering that <a href="http://community.salesforce.com/sforce/board/message?message.uid=96974#U96974">Steve Andersen had run into some obstacles</a> with Contact.Email visibility, I decided to check the guest profile for Contact Field Level Security.  Here&#8217;s what I found:</p>
<div id="attachment_295" class="wp-caption alignnone" style="width: 521px"><img src="http://www.x2od.com/wp/uploads/sitesguestcontactfls.jpg" alt="Guest profile Contact Field Level Security" title="sitesguestcontactfls" width="50%" height="50%" class="size-full wp-image-295" /><p class="wp-caption-text">Guest profile Contact Field Level Security</p></div>
<p>If you squint a bit, you can see that the Opt-Out and Email fields are hidden to the guest user.  I have no idea why these, in particular, are hidden.  Likewise, I couldn&#8217;t find a pattern in which fields were shown on the custom objects I had created, nor which were visible on standard objects.</p>
<p>In any event, I don&#8217;t have any pearls of wisdom on this topic; this is more of an informative note to all that are using Sites (especially if you plan to do any communication-subscriptions) to check out the Field-Level Security.</p>
<p>For those wondering how to get to this Profile (since it is not visible in the usual Profile section), go to the Sites page > Site Name or URL > Public Access Settings (a button).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.x2od.com/2008/12/22/sites-guest-profile.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
