Cloud based Data Loader

Workbench_logo
On my Mac, I've historically used Simon Fell's LexiLoader as an alternative to the officially supported yet windows-only Salesforce Data Loader. Though, today, I was running a deletion of a rather large set of records and it was running oh sooooo sloooooow. Now that's probably more the fault of Time Warner Cable than anyone else. (Maybe streaming Pandora at the same time didn't help.) If only there was some cloud-based alternative.

Workbench 1Then I remembered about Workbench. Admittedly, I have not used Workbench since its very early release and at that point I think the hosted version was not yet GA. I had even forgotten that I still had it bookmarked. Well, I logged in today and  *Facepalm* . Why have I not been using this all along?

Now I don't do data migrations very often, but I am constantly looking for details on schema and testing queries. Usually I use Eclipse, but navigating Workbench is so much faster. With the pull down menu I can hit a key and get down to my object faster. Workbench loads fields faster than Eclipse as well. I can also use command +f . I can copy and paste an id from a test query or click on the record to open it in Salesforce. These little oft-used hotkey features are noticibly lacking in the Eclipse version of the schema explorer.

Ever need to get your session id? Its right there under the Info menu. 

Want a web based version of Ant? Check the Migration menu.

It even has utilites for anonymous execute and reseting user password. Probably my only complaint is that the debugging interface for anonymous execute isn't as nice as the new console, but really that's just me being nitpicky.

Go check it out for yourself.

Loginhttps://workbench.developerforce.com 
Doc http://wiki.developerforce.com/page/Workbench

Advertisements

Apex RoundingMode

One of the things that always sends me searching through my old code is rounding. I can never remember the syntax and the Apex documentation on Decimal methods on the Salesforce Developer site doesn't provide any examples inthe description (Its somewhat hidden up in the Divide method description if you look for it) . So, I thought I'd put a few examples here as a reminder to myself and to share with everyone else Googling it. 

Decimal numberToRound = 12.345;
Decimal roundedUp = numberToRound.round(roundingMode.UP); //result: 13
Decimal roundedDown = numberToRound.round(roundingMode.DOWN); //result: 12
Decimal scaled = numberToRound.setscale(0); //result: 12 – no rounding specified, just removes decimal places
Decimal scaledUp = numberToRound.setscale(0, roundingMode.UP); //result: 13 – no rounding, just removes decimal places

Look at the documentation on the RoundingModes for more detail on Ceiling, Half_Down, Half_Up, etc. 

 

 

Salesforce Technical Architect Certification; Part 1 Multiple Choice Exam

Yesterday, I passed part two of the three-part Technical Architect Certification for Salesforce.com. (Step one being the self-evaluation; which really doesn't count given that its free and you can take it repeatedly until you pass.) The third and final step will be a four hour session presenting two cases in front of a live review board of technical architects. I've got a few months to prepare for that. So, in the meanwhile, I thought I'd do a bit to help anyone who might be prepping for the exam while its still fresh in my mind.

1. Find out what you don't know

When I went through the self evaluation, I wrote down the terms that I was less familiar with and made a point of researching them afterwards. This was helpful because a lot of the study resources listed below will assume a certain level of knowledge and make reference to terms without necessarily defining them for you. Though I've been an architect and working with Salesforce for several years, I didn't come from an EAI background, so I wasn't as familiar with industry jargon like Enterprise Service Bus (ESB) or Execute, Transform, & Load (ETL) as they referred to integration and middleware. Honestly, I only first heard the acronym EAI last week and I had to go look it up. 

So, if you're stronger on the functional side get familiar with Apex and Visualforce to the level where you can define an Apex abstract class and explain how it might differ from an interface. If you are a developer, make sure you know what can be better done with configuration (Declarative) vs code (Programmatic). In the majority of cases, the former will be preferable to the latter. In that same vein, understand when it is better to use synchronous (web service) vs asynchronous (outbound messaging) callouts. If you don't have a background as a network admin, understand proxies and firewalls and how they might need to be configured to successfully allow salesforce to connect to internal systems in the DMZ (also know what that term means).

Personally, I had little direct experience working with SSO, Large Data Volumes (LDV), REST API, and Heroku. So I put a little more focus on those areas.

Learn the differences between three types of SSO available to Salesforce - delegated authentication, SAML, and Oauth – and when using an appexchange partner like Ping Identity might be appropriate. The comparison matrix here was very helpful to that end.

The most important thing about LDV was knowing the line of demarcation; 2 million records or greater. Next understand what it take to import that volume of data. Also, familiarize yourself with skinny tables and know that in some cases you'll need to de-normalize data or create external id fields (which are indexed) for reporting and performance. Lastly, know when to question if importing the data is even the best approach – does it need to be used for reports or processes in Salesforce (ie workflows, escalations, etc) or can be be accessed on demand via web service callouts or mashups. 

Know the difference between Soap, Rest, and Bulk API's and which situations call for each. Also understand the methods for securing inbound API calls and how an external system might verify that an outbound message or callout came from Salesforce – certificates, 2 way SSL, ip restrictions, trusted ips, remote site settings.

2. Dive in

I was fortunate enough to have access to some proprietary webinars and study materials that I can't make publicly available. However, if you are a Salesforce partner look into getting access to the study group in the Partner Academy. Otherwise, if your Salesforce org has paid for Premier Training there are some self-paced technical architect courses available in the online catalog- https://help.salesforce.com/apex/HTTrainingCatalog.

The following is a list of publically-available material that I reviewed prior to the exam. 

http://certification.salesforce.com/Architects

http://wiki.developerforce.com/page/10_Common_Mistakes_Architects_Make

http://wiki.developerforce.com/page/CRC:PlatformArchitecture

http://wiki.developerforce.com/page/CRC:PlatformGovernance

http://wiki.developerforce.com/page/CRC:OrgArchitecture#Force.com_Org_Architectures

http://wiki.developerforce.com/page/CRC:IntegrationArchitecture

http://wiki.developerforce.com/page/Integrating_with_the_Force.com_Platform

http://wiki.developerforce.com/page/CRC:DataArchitecture

http://wiki.developerforce.com/page/CRC:SSO

http://wiki.developerforce.com/page/Single_Sign-On_for_Desktop_and_Mobile_Applications_using_SAML_and_OAuth

http://wiki.developerforce.com/page/Single_Sign-On_with_Force.com_and_Microsoft_Active_Directory_Federation_Services

http://www.salesforce.com/us/developer/docs/ldv/salesforce_large_data_volumes_bp.pdf

http://wiki.developerforce.com/page/DeveloperCoreResources

http://wiki.developerforce.com/page/Architect_Core_Resources

http://bobbuzzard.blogspot.com/2012/02/certified-salesforce-technical.html

3. Exam Tips

The exam itself is 60 questions and 120 minutes long. So, you can't dwell too long on any one question. If I didn't know some of the people who wrote the questions, I would swear some of them were written by lawyers. (I kid because I love.) In all seriousness, there are some questions where you may need to just pass and move on. If you read a question more than two times and find yourself going for a third, just flag it for review, select a random answer, and move to the next. Don't sacrifice five questions you do know for one question that you might. My strategy was to do a first quick pass through the exam and tackle only the easy low hanging fruit. Then I did a second pass on those I had flagged for review (a little less than half) with a better sense of how much time I could afford each. 

The questions follow your typical standardized testing format, in that, of the answers given, one is egregiously incorrect, another is incorrect because of some slight twist in phrasing and of the choices remaining one is better than the other. There were only a handful of questions where the correct answer jumped out at me. In the cases where it didn't, I identified the incorrect answers first and then evaluated those that remained. From what I recall, about the majority of questions were evenly split between selecting a single answer and two. Only a handful required selecting three. You don't get credit for partially correct answers so do give those a bit more time.

 

Good luck.

 

Added May 16, 2012 – Continued in Salesforce Technical Architect Certification; Part 2 – Review Board