<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Force.com Blogs</title>
	
	<link>http://blogs.developerforce.com</link>
	<description />
	<lastBuildDate>Sat, 18 May 2013 00:53:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SforceBlog" /><feedburner:info uri="sforceblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>SforceBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/SforceBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FSforceBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Building Mobile Apps for Portal Users</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/IoKWHPc2zxI/building-mobile-apps-for-portal-users.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/building-mobile-apps-for-portal-users.html#comments</comments>
		<pubDate>Sat, 18 May 2013 00:06:45 +0000</pubDate>
		<dc:creator>Pat Patterson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Communities]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[portal]]></category>

		<guid isPermaLink="false">http://26.13931</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/building-mobile-apps-for-portal-users.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/developer-relations/files/2013/02/Screen-shot-2013-02-26-at-11.39.40-AM.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Back in February, I blogged about how web applications can use OAuth to obtain a token and access the Force.com API on behalf of Portal users; I’ve had a couple of questions on how to build mobile apps that do the same, so here are the details.]]></description>
			<content:encoded><![CDATA[<p>Back in February, I <a href="blogs.developerforce.com/developer-relations/2013/02/oauth-for-portal-users.html">blogged about how web applications can use OAuth to obtain a token and access the Force.com API on behalf of Portal users</a>; I&#8217;ve had a couple of questions on how to build mobile apps that do the same, so here are the details.</p>
<p>I&#8217;m going to assume that you&#8217;ve <a href="http://na1.salesforce.com/help/doc/en/customer_portal_setting_up.htm">set up a portal</a><span style="font-size: 13px;font-weight: normal">, its </span><a href="http://login.salesforce.com/help/doc/en/sites_customer_portal_setup.htm">associated Force.com Site</a><span style="font-size: 13px;font-weight: normal">, </span><a href="http://wiki.developerforce.com/page/Authenticating_Users_on_Force.com_Sites#Setting_up_a_Force.com_Site_to_Register_and_Authenticate_Users">written a custom login page and its controller in Visualforce and Apex</a><span style="font-size: 13px;font-weight: normal">, and </span><a href="http://na1.salesforce.com/help/doc/en/sites_error_pages.htm">set it as the &#8216;Authorization Required Page&#8217; for the Site</a><span style="font-size: 13px;font-weight: normal"> (</span><a href="http://bit.ly/cis-force-2012">here&#8217;s a step-by-step tutorial</a><span style="font-size: 13px;font-weight: normal"> I wrote on the topic last year that will walk you through the details). As I mentioned in </span><a href="https://blogs.developerforce.com/developer-relations/wp-admin/blogs.developerforce.com/developer-relations/2013/02/oauth-for-portal-users.html">that earlier post</a><span style="font-size: 13px;font-weight: normal">, your Portal users must have the &#8216;API Enabled&#8217; permission on their profile. Since you can&#8217;t set this on the default &#8216;High Volume Customer Portal&#8217; profile, you will need to create a custom profile as a clone of the existing one and check &#8216;API Enabled&#8217; on that custom profile.</span><br />
<a href="http://blogs.developerforce.com/developer-relations/files/2013/02/Screen-shot-2013-02-26-at-11.39.40-AM.png"><img src="http://blogs.developerforce.com/developer-relations/files/2013/02/Screen-shot-2013-02-26-at-11.39.40-AM.png" alt="" width="624" height="158" /></a></p>
<p>Now you&#8217;re ready to write a mobile app for your Portal users.</p>
<p>I highly recommend installing the <a href="http://wiki.developerforce.com/page/Mobile_SDK">Salesforce Mobile SDK</a> and using one of its template applications (<a href="https://github.com/forcedotcom/SalesforceMobileSDK-iOS/#application-templates">iOS</a>, <a href="http://wiki.developerforce.com/page/Building_a_Mobile_SDK_Hybrid_App_for_Android">Android</a>) to experiment. The Contact Explorer is particularly useful for our purposes, since Portal users can access Contacts via the API. I&#8217;ll focus on the hybrid iOS case here, since that&#8217;s where my experience is, but the principles are the same for native and Android apps.</p>
<p>In Xcode, create the hybrid template app by selecting <strong>File | New | New Project,</strong> clicking &#8216;Hybrid Force.com App&#8217;, and hitting next. Give your app a &#8216;Product Name&#8217;. Since we&#8217;re just experimenting, we&#8217;ll use the sample Consumer Key (if you&#8217;re writing a real app, you&#8217;ll need to create a Connected App in a Developer Edition org and use its Consumer Key). Do NOT select &#8216;Use Automatic Reference Counting&#8217;. Select a location for your project directory, and the Mobile SDK will create a template project.</p>
<p>One manual step is required before you can run the app &#8211; select the yellow &#8216;www&#8217; folder in the Project Navigator view on the left, right click, and delete it, clicking &#8216;Remove References Only&#8217;. Now right click the top-most yellow folder, select <strong>Add Files to &#8220;[Your Project]&#8220;</strong>, find the &#8216;www&#8217; folder in the project and select it. Select &#8216;Create folder references for any added folders&#8217; and click &#8216;Add&#8217;. A blue &#8216;www&#8217; folder will now be visible in the Project Navigator.</p>
<p>Now you can run the template app, either on the iOS Simulator, or a real iOS device. Click &#8216;Run&#8217;, and, when the app launches, you should see a login page.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSLoginPage.png"><img class="alignnone size-full wp-image-13932" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSLoginPage.png" alt="" width="200" /></a></p>
<p>If you don&#8217;t, check that you correctly deleted and re-added that &#8216;www&#8217; folder as detailed above. By default, the mobile app is configured for accessing production or developer edition orgs. Login with a username and password and you&#8217;ll see the authorization page.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSAuthorization.png"><img class="alignnone size-full wp-image-13933" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSAuthorization.png" alt="" width="200" /></a></p>
<p>Click &#8216;Allow&#8217; and you&#8217;ll see a series of buttons. Click &#8216;Fetch SFDC contacts&#8217;, scroll down, and you should see a list of Contact records from your org.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSContactList.png"><img class="alignnone size-full wp-image-13934" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSContactList.png" alt="" width="200" /></a></p>
<p>So far so good &#8211; we&#8217;ve retrieved a contact list as a &#8216;regular&#8217; Salesforce user. How do we enable this for Portal users? As I mentioned in <a href="https://blogs.developerforce.com/developer-relations/wp-admin/blogs.developerforce.com/developer-relations/2013/02/oauth-for-portal-users.html">the earlier blog post</a>, we can now use the Force.com Site Secure Web Address for OAuth. In the case of a Mobile SDK app, we need to set this in the app settings. Click the Home button and open the iOS Settings App. You&#8217;ll see an entry for your template app. Click it and you&#8217;ll see its settings page:</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSSettings.png"><img class="alignnone size-full wp-image-13935" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSSettings.png" alt="" width="200" /></a></p>
<p>Set &#8216;Logout Now&#8217; to &#8216;On&#8217;, change &#8216;Login Host&#8217; from &#8216;Production&#8217; to &#8216;Custom Host&#8217;, then set the &#8216;Custom Host&#8217; to the hostname (just the hostname &#8211; no https:// prefix) of your Force.com Site. In my case, this is <code>authtest-developer-edition.na14.force.com</code>. Restart the app, and you should see your Site&#8217;s custom login page. Here&#8217;s mine:</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSPortalLoginPage.png"><img class="alignnone size-full wp-image-13936" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSPortalLoginPage.png" alt="" width="200" /></a></p>
<p>NOTE &#8211; the Mobile SDK is configured to load pages from salesforce.com and force.com ONLY. If you try to login with Facebook (via an <a href="http://blogs.developerforce.com/developer-relations/2012/01/social-single-sign-on-authentication-providers-in-spring-12.html">Authentication Provider</a>) or any other external site, you&#8217;ll get a &#8216;whitelist error&#8217;. To allow an external site, you will need to add it to the whitelist. In Xcode, open the &#8216;Supporting Files&#8217; folder, and click the &#8216;Cordova.plist&#8217; file. Open the &#8216;External Hosts&#8217; array and you will see the existing whitelist: *.force.com and *.salesforce.com. You can add your required hosts to this list, remembering any additional locations for static files and the like. For example, for Facebook login, you&#8217;ll need to add *.facebook.com, *.fbcdn.net and fbstatic-a.akamaihd.net.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/Xcode-Settings.png"><img class="alignnone size-full wp-image-13937" src="http://blogs.developerforce.com/developer-relations/files/2013/05/Xcode-Settings.png" alt="" width="443" /></a></p>
<p>With that in place, you should be able to login to the Portal. You should see the same authorization page, then be able to retrieve a contact list, just as you did before, but this time in the context of a Portal user. Congratulations!</p>
<h1>Coming Soon &#8211; Salesforce Communities</h1>
<p><a href="http://www.salesforce.com/chatter/features/communities/">Salesforce Communities</a> will be generally available in the <a href="http://www.salesforce.com/customer-resources/releases/">Summer &#8217;13 release</a> (safe harbor!) &#8211; you&#8217;ll be pleased to know that you can enable a mobile app for Community users, and it&#8217;s MUCH easier than it was with Portal. You get an automatically built login page for your Community, including your branding and whichever Authentication Providers and SAML Identity Providers you have selected for login. You just need to set the community hostname and path in the mobile app config &#8211; for example, UniversalTelco.force.com/customers. Here&#8217;s the login page for an example community I configured to show in my Salesforce Identity workshop next week at <a href="http://www.gluecon.com/2013/">GlueCon</a>:</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSCommunityLoginPage.png"><img class="alignnone size-full wp-image-13938" src="http://blogs.developerforce.com/developer-relations/files/2013/05/iOSCommunityLoginPage.png" alt="" width="200" /></a></p>
<p>&nbsp;</p>
<p>Here&#8217;s a short video that shows the different login settings:</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/zOL9N6hr4TI?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Building a mobile app for Portal or Community users? Let us know in the comments!</p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/IoKWHPc2zxI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/building-mobile-apps-for-portal-users.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/building-mobile-apps-for-portal-users.html</feedburner:origLink></item>
		<item>
		<title>Developer Tweets of the Week</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/ni5Ph7RbWio/developer-tweets-of-the-week-6.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/developer-tweets-of-the-week-6.html#comments</comments>
		<pubDate>Fri, 17 May 2013 20:04:42 +0000</pubDate>
		<dc:creator>Lauren Grau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://26.13922</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/developer-tweets-of-the-week-6.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/developer-relations/files/2013/04/tweeting-300x253.jpg" class="alignleft wp-post-image tfe" alt="" title="" /></a>Check out this week's tweets from the Salesforce developer community.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-13525" src="http://blogs.developerforce.com/developer-relations/files/2013/04/tweeting-300x253.jpg" alt="" width="200" height="169" />Some highlights from our active Twitter community from the past week include Mobile SDK, governor limits, and the Mobile Dev Challenge. If you are on Twitter .. share your thoughts with us <a href="https://twitter.com/forcedotcom">@forcedotcom</a>. Also, if you see a tweet out there that should be showcased on our <a href="https://twitter.com/search/realtime?q=tweetsoftheweek&amp;src=typd">#tweetsoftheweek</a> &#8211; pass it on to <a href="https://twitter.com/laurengrau">@laurengrau</a> or <a href="https://twitter.com/ktopenn">@ktopenn</a>.</p>
<blockquote class="twitter-tweet"><p>Shout out to The @<a href="https://twitter.com/forcedotcom">forcedotcom</a> Team! @<a href="https://twitter.com/imsorrysandwich">imsorrysandwich</a> &amp; @<a href="https://twitter.com/oksman">oksman</a> &#8211; Got me all setup using the <a href="https://twitter.com/search/%23MobileSDK">#MobileSDK</a> framework. Now I can play this W/E!</p>
<p>&mdash; Joshua Hoskins ☁ (@jhoskins) <a href="https://twitter.com/jhoskins/status/335471294369890305">May 17, 2013</a></p></blockquote>
<blockquote class="twitter-tweet"><p><a href="https://twitter.com/search/%23salesforce">#salesforce</a> governor limits on no. of code statements help make you think creatively in writing code and get rid of the fat coding style.</p>
<p>&mdash; Vishal Shah (@vishalashah) <a href="https://twitter.com/vishalashah/status/335430152886558720">May 17, 2013</a></p></blockquote>
<blockquote class="twitter-tweet"><p>The competition starts now.Mobile Developer Challenge 2013 with <a href="http://t.co/CnFYou4aSu" title="http://salesforce.com">salesforce.com</a> <a href="http://t.co/SEJ9CmwOCs" title="http://lnkd.in/G8h_z6">lnkd.in/G8h_z6</a></p>
<p>&mdash; Michael Traw (@Trawsome) <a href="https://twitter.com/Trawsome/status/334859504132947969">May 16, 2013</a></p></blockquote>
<p>Here are some top Salesforce Developer jobs this week from around the world:</p>
<blockquote class="twitter-tweet"><p>Know anyone for this job? Salesforce Developer in New Jersey <a href="http://t.co/4Oe7ZSncZ7" title="http://bull.hn/l/18S2E/5">bull.hn/l/18S2E/5</a> <a href="https://twitter.com/search/%23job">#job</a></p>
<p>&mdash; Dan Grossberg (@m1ndhive) <a href="https://twitter.com/m1ndhive/status/335449587101880320">May 17, 2013</a></p></blockquote>
<blockquote class="twitter-tweet"><p>Salesforce Developer, full time Toronto in Toronto, ON Canada <a href="http://t.co/Ueq5rFomOw" title="http://bull.hn/l/1BBN0/1">bull.hn/l/1BBN0/1</a> <a href="https://twitter.com/search/%23job">#job</a></p>
<p>&mdash; George Tzamalis (@georgetzamalis) <a href="https://twitter.com/georgetzamalis/status/335445412829855745">May 17, 2013</a></p></blockquote>
<blockquote class="twitter-tweet"><p>Job: Sales force Developer (programming and english advanced) in Valparaiso, Chile <a href="http://t.co/Jp6lU8II1J" title="http://bull.hn/l/185TA/2">bull.hn/l/185TA/2</a> #JOBS#SALESFORCE#DEVEL</p>
<p>&mdash; Romina Garate (@EVS_recruitment) <a href="https://twitter.com/EVS_recruitment/status/335377502694412288">May 17, 2013</a></p></blockquote>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/ni5Ph7RbWio" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/developer-tweets-of-the-week-6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/developer-tweets-of-the-week-6.html</feedburner:origLink></item>
		<item>
		<title>Build the World You Want, One App at a Time</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/Hd83Cpa6vGA/build-the-world-you-want-one-app-at-a-time.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/build-the-world-you-want-one-app-at-a-time.html#comments</comments>
		<pubDate>Fri, 17 May 2013 14:39:51 +0000</pubDate>
		<dc:creator>Reid Carlberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[appexchange]]></category>
		<category><![CDATA[entrepreneur]]></category>
		<category><![CDATA[friday]]></category>
		<category><![CDATA[ISV]]></category>

		<guid isPermaLink="false">http://26.13852</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/build-the-world-you-want-one-app-at-a-time.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.26.28-AM-1024x347.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>The thing I like most about the AppExchange is it's openness.  Anyone can publish an app. Anyone can decide if they want to give it away or charge. And anyone can decide if they want to make their app simple or complex.  The AppExchange is a tool for reinvention.  It's a mechanism for driving change.  For some people, the AppExchange is a completely new and totally unique path to personal growth.]]></description>
			<content:encoded><![CDATA[<p>The thing I like most about the <a href="http://appexchange.salesforce.com">AppExchange</a> is it&#8217;s openness.  Anyone can publish an app. Anyone can decide if they want to give it away or charge. And anyone can decide if they want to make their app simple or complex.</p>
<p>The AppExchange is a tool for reinvention.  It&#8217;s a mechanism for driving change.</p>
<p><strong>For some people, the AppExchange is a completely new and totally unique path to personal growth.</strong></p>
<p>If you like stats, check these out. More than 1,800 apps. More than 1.7m installs. 70% of the Fortune 100 have installed an app. The stats go on and on. Read <a href="http://twitter.com/adamse">Adam Seligman&#8217;s</a> <a href="http://www.slideshare.net/partnerforce/business-app-bootcamp">presentation from Business App Bootcamp for more</a>.</p>
<p><strong>I&#8217;m thinking about this today for three reasons.</strong></p>
<p style="text-align: center"><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.26.28-AM.png"><img class="aligncenter size-large wp-image-13906" src="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.26.28-AM-1024x347.png" alt="" width="738" height="250" /></a></p>
<p>First, I had a chance to listen to the excellent <a href="http://buttonclickadmin.com/michael-farrington/">Button Click Admin podcast this week featuring none other than Michael Farrington</a> (<a href="http://twitter.com/MichaelForce">@MichaelForce</a>).  If you&#8217;ve been around the community a while, you&#8217;ve probably run into either Michael or his excellent apps <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N30000003HSXEEA4">Field Trip</a> and <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N300000016a6rEAA">Draggin&#8217; Role</a>.  44 5 star reviews and 28 reviews, 4.5 stars, respectively (as of today).  These are great tools he needed.  So he took his great ideas and turned them into apps.  These apps have created huge career opportunities for him.</p>
<p style="text-align: center"><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.24.53-AM.png"><img class="size-full wp-image-13905 aligncenter" src="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.24.53-AM.png" alt="" width="641" height="425" /></a></p>
<p>Second, <a href="http://redargyle.squarespace.com/blog/2013/5/15/proud-to-announce-high-five-is-live-on-the-appexchange.html">Garry Polmateer over at Red Argyle</a> (<a href="http://twitter.com/DarthGarry">@DarthGarry</a>) just released <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N3000000B3GloEAF">High Five</a>, a collection of &#8220;Five fields every Salesforce Instance Should Have.&#8221;  This app started off as <a href="http://blogs.salesforce.com/company/2012/12/5-fields-every-salesforce-instance-should-have.html">a column on the Salesforce Blog</a>.  This kind of domain knowledge is an obvious shoe in for an app.  If you&#8217;re blogging about a solution to a business problem, building an app helps your readers understand your ideas in a much more concrete way.  I&#8217;m so glad Red Argyle did this.  They&#8217;re reshaping their careers, their business and their world.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.22.25-AM.png"><img class="size-full wp-image-13902 aligncenter" src="http://blogs.developerforce.com/developer-relations/files/2013/05/Screen-Shot-2013-05-17-at-9.22.25-AM.png" alt="" width="528" height="264" /></a></p>
<p>Third, I&#8217;ve had a chance to spend some time with the good people at <a href="http://leveleleven.com/">Level Eleven</a>, and learn about the story behind their app, <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N300000055dIBEAY">Compete</a> (74 5 star reviews!). Bob Marsh (<a href="https://twitter.com/bobmarsh5">@BobMarsh5</a>) is their CEO, and loves talking about his journey.  The highlight for me?  He went from idea to paying customer in only four months.  Four. Months.  And since then, investment and significant enterprise sales have followed.  Bob&#8217;s Twitter profile cracks me a up: could be a decent golfer, but he&#8217;s building a business instead.  Smart move.</p>
<p><strong>There are a lot of great stories of entrepreneurs who have created the future they wanted by building apps.  <a href="http://blogs.developerforce.com/reid-carlberg/2012/11/hemmeter-maps-destiny-with-appexchange.html">Scott Hemmeter at Arrowpointe</a> has done it.  <a href="http://blogs.developerforce.com/reid-carlberg/2013/02/customer-turns-developer-turns-appexchange-entrepreneur.html">Jeremy Kraybill and the team at Dashcord</a> have done it.  The list goes <a href="http://blogs.developerforce.com/reid-carlberg/2012/12/boring-business-process-inspires-colorful-entrepreneur.html">on</a> and <a href="http://blogs.developerforce.com/reid-carlberg/2012/11/lead-speed-creator-makes-it-rain-on-appexchange.html">on</a> and <a href="https://appexchange.salesforce.com/results?keywords=bracket%20labs">on</a> and <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N30000003IOhkEAG">on</a> and <a href="https://appexchange.salesforce.com/listingDetail?listingId=a0N30000009x5FZEAY">on</a> and &#8230;&#8230;. you get the idea.</strong></p>
<p><a href="http://wiki.developerforce.com/page/Publish_Your_First_App_with_AppExchange_Checkout">Getting started is easy</a>.  Taking the first step is up to you.  If you have questions, there&#8217;s tons of people who will help if you just ask (including me).  Good luck!</p>
<p><a href="http://twitter.com/ReidCarlberg">@ReidCarlberg</a></p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/Hd83Cpa6vGA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/build-the-world-you-want-one-app-at-a-time.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/build-the-world-you-want-one-app-at-a-time.html</feedburner:origLink></item>
		<item>
		<title>Forum Emploi (“Speed Dating”)</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/UsWU14-gYm4/forum-emploi-speed-dating.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/forum-emploi-speed-dating.html#comments</comments>
		<pubDate>Fri, 17 May 2013 12:30:51 +0000</pubDate>
		<dc:creator>Guillaume Roques</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://26.13878</guid>
		<description><![CDATA[Vous êtes développeur, vous maitrisez Force.com, souhaitez donner un nouvel élan à votre carrière ou vous êtes à la recherche d'un emploi ? Rejoignez-nous la semaine prochaine sur la Developer Zone (#devzone) du Salesforce Customer Co]]></description>
			<content:encoded><![CDATA[Vous êtes développeur, vous maitrisez Force.com, souhaitez donner un nouvel élan à votre carrière ou vous êtes à la recherche d'un emploi ?

Rejoignez-nous la semaine prochaine sur la Developer Zone (#devzone) du Salesforce Customer Co<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/UsWU14-gYm4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/forum-emploi-speed-dating.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/forum-emploi-speed-dating.html</feedburner:origLink></item>
		<item>
		<title>“Developer Theater” à Paris</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/MR7jZ2pSS3o/developer-theater-a-paris.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/developer-theater-a-paris.html#comments</comments>
		<pubDate>Fri, 17 May 2013 09:43:40 +0000</pubDate>
		<dc:creator>Guillaume Roques</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[DeveloperTheater]]></category>
		<category><![CDATA[Développeur]]></category>
		<category><![CDATA[devzone]]></category>

		<guid isPermaLink="false">http://26.13872</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/developer-theater-a-paris.html"><img align="left" hspace="5" width="150" src="https://lh5.googleusercontent.com/nRIhbVHAxOybkVbYXeB89DYZ0F-xsi0N7U2FEHotli-O1G2XqjIzQ8dygS0BSmxLfIx70bwOrvdHa7gZI0dcx2nO3kyTmXhGj_JOf4t1v8mBV_B4uZHb3k-r" class="alignleft wp-post-image tfe" alt="" title="" /></a>Si vous êtes en France en ce mois de mai pluvieux, rejoignez-nous au Customer Company Tour Paris ce Jeudi 23 mai. La Developer Zone (#devzone) fera sa première apparition cette année et vous proposera un grand nombre de sessions te]]></description>
			<content:encoded><![CDATA[<p dir="ltr">Si vous êtes en France en ce mois de mai pluvieux, rejoignez-nous au Customer Company Tour Paris ce Jeudi 23 mai. La Developer Zone (#devzone) fera sa première apparition cette année et vous proposera un grand nombre de sessions te<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/MR7jZ2pSS3o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/developer-theater-a-paris.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/developer-theater-a-paris.html</feedburner:origLink></item>
		<item>
		<title>Mini Hacks à Paris</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/0riXf30ehI0/mini-hacks-a-paris.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/mini-hacks-a-paris.html#comments</comments>
		<pubDate>Fri, 17 May 2013 08:40:38 +0000</pubDate>
		<dc:creator>Guillaume Roques</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Développeurs]]></category>
		<category><![CDATA[devzone]]></category>
		<category><![CDATA[MiniHacks]]></category>

		<guid isPermaLink="false">http://26.13868</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/mini-hacks-a-paris.html"><img align="left" hspace="5" width="150" src="https://lh4.googleusercontent.com/-heFBi2f-DShrJA3u7RQOS-LmNB_AG3Zn8Idxb_Uqr2e-KCUAyChd6XqWas2eGsBAx_EC-X2YgLU0NMyRH2SSVuGAg37J-9pBK4s8Yn7VcH2itnR-j2nqs-0" class="alignleft wp-post-image tfe" alt="" title="" /></a>La semaine prochaine, lors du Customer Company Tour Paris 2013, nous aurons de nouveau le plaisir de vous convier aux Mini Hacks qui vous attendront sur la #devzone. Vous y trouverez trois défis couvrant des domaines technologiques vari]]></description>
			<content:encoded><![CDATA[<p dir="ltr">La semaine prochaine, lors du Customer Company Tour Paris 2013, nous aurons de nouveau le plaisir de vous convier aux Mini Hacks qui vous attendront sur la #devzone. Vous y trouverez trois défis couvrant des domaines technologiques vari<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/0riXf30ehI0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/mini-hacks-a-paris.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/mini-hacks-a-paris.html</feedburner:origLink></item>
		<item>
		<title>Sandboxes Add Templates and New Look</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/4NkLiuxEwes/sandbox-templates-and-a-new-look.html</link>
		<comments>http://blogs.developerforce.com/tech-pubs/2013/05/sandbox-templates-and-a-new-look.html#comments</comments>
		<pubDate>Fri, 17 May 2013 01:19:58 +0000</pubDate>
		<dc:creator>Dave Jacowitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[force.com]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[summer '13]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://28.5630</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/tech-pubs/2013/05/sandbox-templates-and-a-new-look.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/tech-pubs/files/2013/05/SandboxTemplateObjects-300x153.png" class="alignleft wp-post-image tfe" alt="" title="SandboxTemplateObjects" /></a>Sandboxes are easier to use and more flexible with the introduction of sandbox templates and an improved user interface. Use sandbox templates for precise control while coordinating, testing and deploying customizations to your production organization.]]></description>
			<content:encoded><![CDATA[<p>The Summer ’13 release includes a couple major changes for sandbox users: templates and a new look that makes it even easier to create and manage your sandboxes.</p>
<h1>What are Sandbox templates?</h1>
<p>Sandboxes contain copies of your organization&#8217;s configuration and (optionally) data. Use sandboxes for training or to test, configure, and deploy changes to a production organization. Full sandboxes are particularly useful for development teams to coordinate testing and deployment to production organizations.</p>
<p>Previously, when you created a Full sandbox, all of your organization&#8217;s data was copied to the sandbox. Now, Sandbox templates let you pick-and-choose specific objects and data to copy to a Full sandbox, save your preferences, and then reuse the template for new Full sandboxes.</p>
<h2>Why Use Templates?</h2>
<p>Sandbox templates:</p>
<ul>
<li>Give you the ability to keep sensitive data from a Full sandbox.</li>
<li>Control the size of a Full sandbox. Smaller sandboxes are created and refreshed more quickly than large ones.</li>
<li>Maintain multiple, reusable templates for different use-cases and development teams.</li>
</ul>
<p style="text-align: center;"><a class="overlay" href="http://blogs.developerforce.com/tech-pubs/files/2013/05/SandboxTemplateObjects.png"><img class="aligncenter size-medium wp-image-5660" title="SandboxTemplateObjects" src="http://blogs.developerforce.com/tech-pubs/files/2013/05/SandboxTemplateObjects-300x153.png" alt="" width="300" height="153" /></a></p>
<h2>Sandboxes are now easier to use, too&#8230;</h2>
<p>The Summer ’13 release also includes an enhanced Sandbox user interface.</p>
<p>The new pages:</p>
<ul>
<li>Tell you how many of each sandbox license you have (and how many are in use).</li>
<li>Provide more information about each type of sandbox to help you decide which one to use.</li>
<li>Walk you through the steps to create a new sandbox.</li>
<li>Include Sandbox Templates and Sandbox History tabs with detailed information to help you manage your templates and sandboxes.</li>
</ul>
<p><a class="overlay" href="http://blogs.developerforce.com/tech-pubs/files/2013/05/SandboxUI_combo_shadow.png"><img class="aligncenter size-medium wp-image-5661" title="SandboxUI_combo_shadow" src="http://blogs.developerforce.com/tech-pubs/files/2013/05/SandboxUI_combo_shadow-300x173.png" alt="" width="300" height="173" /></a></p>
<h2>Want to see this in action?</h2>
<p>You can view a video demo in the <a href="http://www.salesforce.com/customer-resources/releases/summer13/release-training.jsp">Summer &#8217;13 Release Training page</a>.</p>
<p>In the <strong>Force.com</strong> section, click &#8220;Play Now&#8221; and view the <strong>Sandbox</strong> topic of the video.</p>
<h1>Related Resources</h1>
<p>For other information about Sandboxes, check out the <a href="http://wiki.developerforce.com/page/Tools">DeveloperForce Tools and Toolkits</a> page, the Sandbox Overview in the <a href="https://help.salesforce.com/apex/HTViewHelpDoc?id=create_test_instance.htm">Salesforce online help</a>, and the <a href="http://www.salesforce.com/us/developer/docs/dev_lifecycle/index_Left.htm#StartTopic=Content/lifecycle_multi_one.htm">Development Lifecycle Guide</a>.</p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/4NkLiuxEwes" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/tech-pubs/2013/05/sandbox-templates-and-a-new-look.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/tech-pubs/2013/05/sandbox-templates-and-a-new-look.html</feedburner:origLink></item>
		<item>
		<title>Enterprise Mobile Patterns Reference App &amp; Tutorial Now Available</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/9WfUtw5qGGY/enterprise-mobile-patterns.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/enterprise-mobile-patterns.html#comments</comments>
		<pubDate>Fri, 17 May 2013 00:13:41 +0000</pubDate>
		<dc:creator>Quinton Wall</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://26.13862</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/enterprise-mobile-patterns.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/developer-relations/files/2013/05/overview-300x138.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Check out the Enterprise Mobile Patterns guide for five key design patterns for building mobile apps on the Salesforce Platform.]]></description>
			<content:encoded><![CDATA[<p>It might come as a surprise, but I I only own one technical book &#8211; and what&#8217;s even more scary is that it is a physical (printed) book written almost 20 years ago. This book, <a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;qid=1368749255&amp;sr=8-1&amp;keywords=design+patterns">Design Patterns</a>, changed how I approach app development and design. I went from looking at lines of code and syntax to patterns and repeatable implementation processes. To this day, whenever I learn a new language, or approach, I look for patterns, and then apply them to code.</p>
<p>Over the past 18 months or so I have spent a LOT of time working with customers looking to build mobile apps, often using the Salesforce Platform as a mobile backend and connecting to customer data. During this time, a number of common patterns kept emerging. I finally carved out some time to put these mobile pattern down, first in code as part of a reference mobile application that includes a consumer app written with the new <a href="http://www2.developerforce.com/mobile/services/mobile-packs" target="_blank">developer mobile packs</a> (specifically <a href="http://backbonejs.org/" target="_blank">backbone</a> and <a href="http://twitter.github.io/bootstrap/" target="_blank">bootstrap</a>) that&#8217;s running on <a href="http://www.heroku.com" target="_blank">Heroku</a>, and a <a href="http://www2.developerforce.com/mobile/services/mobile-sdk" target="_blank">Mobile SDK</a> hybrid app, again using backbone, and also a tutorial on how to implement the patterns yourself.</p>
<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/overview.png"><img class="aligncenter size-medium wp-image-13864" src="http://blogs.developerforce.com/developer-relations/files/2013/05/overview-300x138.png" alt="" width="300" height="138" /></a></p>
<p>Check out the <a href="https://github.com/quintonwall/Enterprise-Mobile-Patterns#readme">Enterprise Mobile Patterns</a> guide for five key design patterns for building mobile apps on the Salesforce Platform.</p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/9WfUtw5qGGY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/enterprise-mobile-patterns.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/enterprise-mobile-patterns.html</feedburner:origLink></item>
		<item>
		<title>Salesforce Platform ELEVATE Workshop is Coming to Washington DC</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/PCOGy3PvfGo/salesforce-platform-elevate-workshops-is-coming-to-washington-dc-2.html</link>
		<comments>http://blogs.developerforce.com/developer-relations/2013/05/salesforce-platform-elevate-workshops-is-coming-to-washington-dc-2.html#comments</comments>
		<pubDate>Wed, 15 May 2013 16:49:55 +0000</pubDate>
		<dc:creator>Kavindra Patel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apex]]></category>
		<category><![CDATA[salesforce platform]]></category>
		<category><![CDATA[visualforce]]></category>

		<guid isPermaLink="false">http://26.13815</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/developer-relations/2013/05/salesforce-platform-elevate-workshops-is-coming-to-washington-dc-2.html"><img align="left" hspace="5" width="150" src="http://blogs.developerforce.com/developer-relations/files/2013/05/403-elevate-dc-FB-timeline-150x150.png" class="alignleft wp-post-image tfe" alt="" title="403-elevate-dc-FB-timeline" /></a>Our journey to ELEVATE the skills of developer and partner communities continues with our next stop, Salesforce Platform ELEVATE  in Washington DC. Salesforce Platform ELEVATE, is a FREE, one-day, hands-on workshop designed to teach Salesforce Platform developers how to build cloud applications. For Washington DC, we're adding a third track to help enterpreneurs looking to build enterprise apps for the commercial and public sector markets.]]></description>
			<content:encoded><![CDATA[<p><a class="overlay" href="http://blogs.developerforce.com/developer-relations/files/2013/05/403-elevate-dc-FB-timeline.png"><img class="alignright size-thumbnail wp-image-13826" title="403-elevate-dc-FB-timeline" src="http://blogs.developerforce.com/developer-relations/files/2013/05/403-elevate-dc-FB-timeline-150x150.png" alt="" width="150" height="150" /></a>Our journey to ELEVATE the skills of developer and partner communities continues with our next stop, <a href="http://events.developerforce.com/en/events/workshops/dc-elevate-5-2013?d=70130000000tDKs">Salesforce Platform ELEVATE  in Washington DC</a>. Salesforce Platform ELEVATE, is a FREE, one-day, hands-on developer workshop designed to teach beginner and advanced developers how to build cloud applications on the Salesforce Platform. For Washington DC, we are adding a third track to help entrepreneurs looking to build their next big enterprise app for either the commercial or public sector markets.</p>
<ul>
<li>As a new developer, you’ll learn step-by-step how to quickly build a cloud app while learning the foundations of the platform in this hands-on tutorial. By the end of the workshop you’ll be able to create an app using point-and-click development and extend your app using Visualforce Apex Code.</li>
<li>The advanced track picks up where the beginner track leaves off, walking you through unit testing, generating non-HTML pages with Visualforce, Using Apex triggers, asynchronous data handling, and more.</li>
<li>In the ISV track, you will learn how you can build commercial apps on the Salesforce Platform, and partner with salesforce.com to build the next big app for government or business.</li>
</ul>
<p>The DC ELEVATE workshop will be led by veteran Salesforce technical gurus Josh Birk <a href="https://twitter.com/joshbirk">@joshbirk</a>, Gordon Jackson <a href="http://twitter.com/FR4G4M3MN0N">@FR4G4M3MN0N</a>, Ryan Upton <a href="http://twitter.com/nickdrost">@ryanjupton</a> and Daniel Mehlman <a href="http://twitter.com/DanTheCloudGuy">@DanTheCloudGuy</a></p>
<p>Come learn how to build declarative apps, add security, and utilize Visualforce while getting the latest tips, tricks, techniques and best practices for building apps in the cloud.</p>
<p>We will be at the <strong><a href="http://www.westintysonscornerhotel.com/">Westin Tyson&#8217;s Corner</a>, </strong><strong>on Tuesday, May 21 </strong>starting at 8:00 am. We are nearly sold-out, but you still have time to book your seat. <a href="http://events.developerforce.com/en/events/workshops/dc-elevate-5-2013?d=70130000000tDKs">Register</a>, pack your laptop and come on down to raise your cloud developer skills to the next level. If you have any questions about the workshop, feel free to contact me <a href="https://twitter.com/kavindrapatel">@kavindrapatel</a></p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/PCOGy3PvfGo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/developer-relations/2013/05/salesforce-platform-elevate-workshops-is-coming-to-washington-dc-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/developer-relations/2013/05/salesforce-platform-elevate-workshops-is-coming-to-washington-dc-2.html</feedburner:origLink></item>
		<item>
		<title>Extreme Force.com Data Loading, Part 3: Suspending Events that Fire on Insert</title>
		<link>http://feedproxy.google.com/~r/SforceBlog/~3/WxiXZjdDaKk/extreme-force-com-data-loading-part-3-suspending-events-that-fire-on-insert.html</link>
		<comments>http://blogs.developerforce.com/engineering/2013/05/extreme-force-com-data-loading-part-3-suspending-events-that-fire-on-insert.html#comments</comments>
		<pubDate>Wed, 15 May 2013 05:00:01 +0000</pubDate>
		<dc:creator>Bud Vieira</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[data loading]]></category>
		<category><![CDATA[force.com]]></category>
		<category><![CDATA[LDV]]></category>

		<guid isPermaLink="false">http://25.7459</guid>
		<description><![CDATA[<a href="http://blogs.developerforce.com/engineering/2013/05/extreme-force-com-data-loading-part-3-suspending-events-that-fire-on-insert.html"><img align="left" hspace="5" width="150" src="https://lh3.googleusercontent.com/_T2XF7K9GV4zFqqeZMmBMlMcGytpjGoWLIUoQ8pyrdDbQWEKInczFzhomsCFSiQVOuL0_1Ij9I0MQbzVQTLsE-xiYi-3iOBDm4eN_iBaLtKofOBatGNNTXrM" class="alignleft wp-post-image tfe" alt="" title="" /></a>When you need to load a very large amount of data into Force.com quickly, you want to ensure that each insert is as efficient as possible. With appropriate preparation and post-processing, you can disable data validation and enrichment operations while loading--without compromising your data integrity or business rules.]]></description>
			<content:encoded><![CDATA[<p><img style="float: right;padding-left: 10px" src="https://lh3.googleusercontent.com/_T2XF7K9GV4zFqqeZMmBMlMcGytpjGoWLIUoQ8pyrdDbQWEKInczFzhomsCFSiQVOuL0_1Ij9I0MQbzVQTLsE-xiYi-3iOBDm4eN_iBaLtKofOBatGNNTXrM" alt="" width="173px;" height="172px;" /><br />
You are planning a Force.com implementation with large volumes of data. Your data model is in place, all your code is written and has been tested, and now it’s time to load the objects, some of which have tens of millions of records.</p>
<p>What is the most efficient way to get all those records into the system?</p>
<h1>The Force.com Extreme Data Loading Series</h1>
<p>This is the third entry in a six-part series of blog posts covering many aspects of data loading for very large enterprise deployments.</p>
<p>Here are the topics planned for this series.</p>
<ul>
<li><a href="http://blogs.developerforce.com/engineering/2013/02/extreme-salesforce-data-loading-part-1-tune-your-data-model.html">Designing the data model for performance</a></li>
<li><a href="http://blogs.developerforce.com/bud-vieira/2013/04/25/extreme-force-com-data-loading-part-2-load-into-a-lean-salesforce-configuration/">Loading data into a lean configuration</a></li>
<li>Suspending events that fire on insert</li>
<li>Sequencing load operations</li>
<li>Managing bulk data loads</li>
<li>Taking advantage of deferred sharing</li>
</ul>
<p>This post explains how to speed up large data loads by temporarily disabling data operations that customers frequently perform during record inserts.</p>
<h1>Why Suspend Data Validation and Enrichment Events on Record Insert?</h1>
<p>The Force.com platform includes powerful tools for making sure data entered by the users of your applications is clean and includes appropriate relationships between records.</p>
<ul>
<li>Validation rules ensure that the data users enter for new and existing records meets the standards specified by your business.</li>
<li>Workflow rules allow you to automate field updates, email alerts, outbound messages, and tasks associated with workflow, approvals, and milestones.</li>
<li>Assignment rules distribute leads and cases to appropriate teams, and accounts to appropriate territories.</li>
<li>Triggers are Apex code that allow you to manipulate data and perform other actions on record insert.</li>
</ul>
<p>While these tools can allow you to preserve data integrity during normal operations, they can also slow inserts to a crawl if you enable them during massive data loads. As we mentioned in our last post on <a href="http://blogs.developerforce.com/engineering/2013/04/extreme-force-com-data-loading-part-2-load-into-a-lean-salesforce-configuration.html">loading lean</a>, when you reach the cutover point while replacing a legacy system, you might want to load your data as quickly as possible to minimize the effort required to synchronize it.</p>
<p>But if you turn off validation, workflow, and triggers, how can you ensure that, once you’ve finished loading, you have accurate data and the right relationships established between objects? There are three key phases to this effort.</p>
<ol>
<li>Analyzing and preparing data</li>
<li>Disabling events for loading</li>
<li>Post-processing</li>
</ol>
<p>Let’s look at each of these phases in more detail.</p>
<h1>Analyzing and Preparing Data</h1>
<p>To load safely without triggers, validation rules, and workflow rules running, you can examine the business requirements that you could ordinarily meet with these operations, then ask the following questions to find suitable alternatives.</p>
<ol>
<li>
<h3>Which of your requirements can you meet by data cleansing before data loading, or by sequencing load operations where there are critical dependencies between objects?</h3>
</li>
</ol>
<p>For example, if you normally use a validation rule to ensure that user entries are within valid ranges, you can query the data set before loading to find and fix records that don’t conform to the rules.</p>
<p><img src="https://lh5.googleusercontent.com/hh1xfxJgDmWVB13Bf3eWAFM7wHDbzo5f8kIj3RMvh1Z1Uc2XwkM0lm9_oMJwDoUcirJOf2TUUb8FHXe6s4R6Sr-NRcWd9koYZr5ZIG54YylYSCnqDb2i42TE" alt="" width="537px;" height="344px;" /></p>
<p>Where you have parent-child relationships in your data model, you need to have the IDs of the parent records before you can insert their children. In these cases, you can sequence operations to load the parents, extract the IDs, and update the source data to include the parent IDs before loading the child records.</p>
<p>With multiple dependencies, this sequencing can be tricky, so make sure you check <a href="http://developer.force.com/architect">Architect Core Resources</a> for “Sequencing Load Operations,” the next installment in this series.</p>
<ol start="2">
<li>
<h3>Which of your requirements can you meet by post-processing records after data loading?</h3>
</li>
</ol>
<p>One typical set of use cases in this category relates to data enrichment &#8211; which could involve adding lookup relationships between objects, roll-up summary fields to parent records, and other data relationships between records. Another set relates to the triggering of workflows and other business actions that allow you to process and take advantage of the new data. We’ll come back to these in the <a href="#bookmark=id.h72jdfxislt">Post Processing</a> section below.</p>
<h1>Disabling Events for Loading</h1>
<p>Once you have analyzed all your data validation and enrichment requirements, and planned actions to manage them either before or after data loading, you can temporarily disable your rules and triggers to speed up loading. Simply edit each rule and set it to “inactive” status.</p>
<p><img src="https://lh6.googleusercontent.com/fscGL29usBYrH8MnCH6nHuMEHUoGr7WN63Q0Z4AmsjWNnmzBrjUnlYEaSZ0UMnOQcBcQpZ93Hm3PvyuyStHDuGGeLv7b0rIY8D9cKbni7J1kwwP8NdauWEF3" alt="" width="587px;" height="157px;" /></p>
<p>You can disable Validation, Lead and Case assignment rules, and Territory assignment rules in the same way.</p>
<p>Temporarily disabling triggers is a bit more complex and requires some preparation. First, create a Custom Setting and a corresponding checkbox field to control when a trigger should fire. Then include a statement like the one highlighted below in your trigger code. Once this is done, disabling or enabling your trigger is as simple as editing the checkbox field.</p>
<p><img src="https://lh4.googleusercontent.com/QS-F1e8w3OwVon_mb2Uz48cjUBEKlPZ_GGShhjk6adq1E4IwbMQrCDbR2RpH4N0TkPlLptxEDktmb_JbQ62f48z71MNu8WU9Xb0z-aFEyPCoelgSSkmqsRk_" alt="" width="542px;" height="174px;" /></p>
<p>Note: In practice, a more robust architecture would include a single, top-level trigger class, with all the work done in helper classes off the main trigger class. Each helper class would have its own custom setting and checkbox field to turn the setting on or off. You can configure exactly what you want to run and what you don’t simply by selecting or deselecting the appropriate fields.</p>
<h1>Post-Processing</h1>
<p>Once you have finished loading your data, it is time to complete the data enrichment and  configuration tasks you have deferred until this point:</p>
<ul>
<li>Add lookup relationships between objects, roll-up summary fields to parent records, and other data relationships between records.</li>
<li>Enhance records in Salesforce with foreign keys or other data to facilitate integration with your other systems.</li>
<li>Batch Apex and the Force.com Bulk API are both efficient methods for performing these updates to a very large number of records.</li>
</ul>
<p><img src="https://lh5.googleusercontent.com/rGAw6gwmDuntRWq-SEZUZbsP7Hb6EmN45mJ7JbjTzlWjrLUxEs6BLGwNtlog4LOcfl-vbA304aXjMtrGMqLLKR1yBUb2RPGkBVsEmv1hycjxhuJb4ZMM4vup" alt="" width="570px;" height="220px;" /></p>
<ul>
<li>Reset the fields on the custom settings you created for triggers, so that they will fire appropriately on record creation and updates.</li>
<li>Turn validation, workflow, and assignment rules back on so they will trigger the appropriate actions as users enter and edit records.</li>
</ul>
<p>Note: When you enable these rules again, they will not automatically process the data you have just loaded. You might have to use the Data Loader or additional Apex coding to trigger an update on these records.</p>
<h1>Summary</h1>
<p>When you need to load a very large amount of data quickly, you want to ensure that each insert is as efficient as possible. With appropriate preparation and post-processing, you can disable data validation and enrichment operations while loading&#8211;without compromising your data integrity or business rules.</p>
<h1>Related Resources</h1>
<ul>
<li><a href="http://blogs.developerforce.com/engineering/2013/02/extreme-salesforce-data-loading-part-1-tune-your-data-model.html">Extreme Force.com Data Loading, Part 1: Tune Your Data Model</a></li>
<li><a href="http://blogs.developerforce.com/engineering/2013/04/extreme-force-com-data-loading-part-2-load-into-a-lean-salesforce-configuration.html">Extreme Force.com Data Loading, Part 2: Loading into a Lean Salesforce Configuration</a></li>
<li><a href="http://wiki.developerforce.com/page/Best_Practices_for_Deployments_with_Large_Data_Volumes">Best Practices for Deployments with Large Data Volumes</a></li>
<li><a href="http://wiki.developerforce.com/page/Designing_Record_Access_for_Enterprise_Scale">Designing Record Access for Enterprise Scale</a></li>
<li><a href="https://help.salesforce.com/HTViewHelpDoc?id=fields_about_field_validation.htm&amp;language=en_US">About Validation Rules</a></li>
<li><a href="http://help.salesforce.com/HTViewHelpDoc?id=creating_workflow_rules.htm&amp;language=en_US">Creating Workflow Rules</a></li>
<li><a href="http://help.salesforce.com/HTViewHelpDoc?id=code_manage_triggers.htm&amp;language=en_US">Managing Apex Triggers</a></li>
<li><a href="http://developer.force.com/architect">Architect Core Resources</a></li>
</ul>
<h1>About the Author</h1>
<p><a href="https://twitter.com/aavra">Bud Vieira</a> is an Architect Evangelist within the Technical Enablement team of the salesforce.com Customer-Centric Engineering group. The team’s mission is to help customers understand how to implement technically sound salesforce.com solutions. Check out all of the resources that this team maintains on the <a href="http://developer.force.com/architect">Architect Core Resources</a> page of Developer Force.</p>
<img src="http://feeds.feedburner.com/~r/SforceBlog/~4/WxiXZjdDaKk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.developerforce.com/engineering/2013/05/extreme-force-com-data-loading-part-3-suspending-events-that-fire-on-insert.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blogs.developerforce.com/engineering/2013/05/extreme-force-com-data-loading-part-3-suspending-events-that-fire-on-insert.html</feedburner:origLink></item>
	</channel>
</rss>
