The New Way to Socialize at Dreamforce 2014

This is a GREAT post by Mark Ross on greeting new and existing colleages at Dreamforce 2014! See you all next week!

The Swamps of Salesforce-Dagobah

Influenza. Enterovirus. Ebola.

Ok, come back, it’s alright. Just reading the names won’t make you sick, alright?

It’s no secret that 2014 has been a bit of a banner year for infectious disease. And, not to scare anybody, but a LOT of us are about to all gather in a location with 150,000 other people from around the world, all at the same time. I don’t know about you, but that gives me just a liiiiittle pause.

But there is a solution! And it is a good one. Recently, the Harvard Medical School published its findings on the nature of hand-to-hand communications, and the likelihood of transmission of diseases in its different forms. The short version: fist bumps are a safer and cleaner alternative to handshakes.

That’s right, you read correctly. Harvard has officially stated that we should all be fist bumping.


Absurd as it sounds, there is a very…

View original post 306 more words

“Salesforce is Slow” – what can you do?

20080730_server-crashYou cringe when you hear it – “Salesforce is slow!” or “Salesforce is broken!”.  Those two phrases increase stress levels and can quickly catch fire in your organization and negatively impact user adoption and confidence.

In the YEARS I have been working with Salesforce, I can count on two hands the total number of times that the service has been actually “DOWN”.  Most of the time, it’s internet routing issues, DNS, and a whole slew of other factors, some of which you can help mitigate if you take a look at the connection between the end user’s workstation and the Salesforce server pods.

The areas YOU can have an effect on are split in to three areas, starting with the client workstation and moving out to the cloud:

Workstations (and mobile devices!)

Workstations are the “front lines” of your organization – computers, tablets, phones, etc.  This is where the majority of your problems are reported and where you can spend a lot of time supporting ghost issues.

Standardize your company on a single (and current!) web browser

Chrome, Internet Explorer, Firefox, Opera – whatever your organization’s preference is – make a decision and stick with it.  You can read the official “Supported Browsers” article by Salesforce to get additional information, but there are so many issues that exist because people are using outdated browsers!

Ensure that your workstations and devices have the latest and greatest security patches has a very low risk of malicious code or other in-sundry hacking things being done, but patches cover more than just security issues.  Network resolution, memory usage, all kinds of other things are regularly addressed through service packs and periodic updates.

Don’t cheap out on memory!

Memory is relatively cheap now – when purchasing a new workstation, 4gb or 8gb is now the MINIMUM you really need in a workstation, no longer is it only reserved for developers or engineers!  Low memory can manifest itself in a general computer or device slowdown and even to slowed rendering of web pages.



The one major thing that your server infrastructure (or if you’re a small biz or home worker, your router itself) provides for you is DNS resolution.  DNS stands for “Domain Name Resolution” and is the sole player that sends your request for “” to an actual server on the Internet.  Without DNS, you cannot reference ANYTHING on the internet by name.

Part of a solid “consumption” DNS strategy is to be able to reference multiple providers across multiple carriers.  Most of the time, IT departments have either just one or a few DNS servers defined that reference your ISP’s servers only.  If your ISP has issues – the broader Internet isn’t down, but you are!

There are a number of public DNS servers – most notably Google Public DNS – that you can reference along with your ISP’s DNS servers to help in the event something somewhere goes awry.


Quality of Service / Traffic Prioritization

How your browser request makes it through the “series of tubes” to the Salesforce servers and back (it’s a round trip!) can be affected by a large number of factors.

In most business environments, there is an appliance that controls all traffic in or out of your network – typically called a “router” or “firewall”.  These appliances often have a feature called “Quality of Service” or “Traffic Prioritization/Shaping” that can help prioritize the transmission of packets meant for over those that belong to someone’s music streaming or Youtube video.  Most of the time, you can prioritize based on destination and source IP address – which you can set to be the Salesforce pod addresses.

NOTE!  You can use QoS to control packet transmission on YOUR NETWORK ONLY.  QoS has no lasting effect as it transmits across the Internet.  Often times though, proper prioritization within your network is enough to know if it’s either how you are using your bandwidth, or if you have to upgrade your…..

Internet Speed

This is a common issue that I see when I hear that dreaded “Salesforce is slow!” comment come across.  There are two sides to your internet connection:  upstream and downstream.  When you hear an ad for Comcast / Cox / <name here> advertising “the fastest speeds around”, they are only talking about downstream – or how much bandwidth you have downloading content.  Rarely do they ever mention how fast you can UPLOAD things.  I know that sounds weird, but even while browsing, at minimum you have to use the upstream side of your connection to acknowledge the receipt of what the web server is sending you.

If someone else on your network is uploading a huge file to a vendor via FTP and taking up all of the bandwidth, you will see a MARKED slowdown in your regular browsing speed.  (you can help this – see the QoS topic above)

Failover / Multiple Internet Connections

If you have a larger organization or one that very data-intensive, you could also benefit from having multiple internet connections.  Most enterprise-grade (and even some small business grade ones!) have connection load balancing or failover built-in or available as an upgrade for a small fee.  Apart from the obvious benefit of if one connection fails completely that you can seamlessly roll over to another one, you can setup rules to ensure that certain traffic goes out over one connection and other traffic (like Salesforce!) goes out another.

You can also read this article from Salesforce that talks about some of these items and a few more:

Happy networking and questions down below!

Passing Variables to Local Application from

shiftyCreating solutions for a living often puts you in situations where business needs sometimes just don’t align to “how technology normally works”.  One of these situations came up today.

Requirement:  We have information in that we need to pass to a local (on the Workstation) Access Database and then open it up.

My brain starts screaming “WHAT?!?!  You can’t do that…the browser won’t let you interact with the local file system!”  After some noodling around, my brain reaches WAAAAY back to VB6 days – Microsoft VBScript.  We could use old school ADO and VBScript commands to open up the Access Database, insert records, and then open that same database through a Shell Run command!

Now – only if Salesforce could be manipulated to build the VBScript file and then the user could just execute it!

After a little messing around, here’s the code!  This code generates the VBS, downloads it with a specific name, and the user can just execute it.

**NOTE – It works with one click in IE, but in Chrome and FF you have to execute the file manually from the downloaded location (clicking on the file via the browser throws an error for some reason)

Visualforce Page

<apex:page standardController="Account" extensions="VBScriptGeneratorController" showHeader="false" sidebar="false" contentType="application/vbs#OpenWord.vbs">
<apex:outputText escape="false" value="{!strOutput}" />


public VBScriptGeneratorController(ApexPages.StandardController scController) {
 // TODO
 this.soObject = (sObject)scController.getRecord();
Account acct = [SELECT Id, Name FROM Account WHERE Id = :(Id)this.soObject.get('Id')];
strOutput = '';
strOutput+= 'Set conn = CreateObject("ADODB.Connection") \r\n';
 strOutput+= 'conn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Users\\Andy\\TestADO.accdb;" \r\n';
 strOutput+= 'strSQL = "INSERT INTO tblData (Var1, Var2) VALUES (\'' + acct.Id + '\',\'' + acct.Name +'\')" \r\n';
 strOutput+= 'Set rs = conn.Execute(StrSQL) \r\n';
 strOutput+= 'conn.Close \r\n';
 strOutput+= 'CreateObject("WScript.Shell").Run "C:\\Users\\Andy\\TestADO.accdb" \r\n';

Why go to Dreamforce 2014?

dreamforce_logoI hear this question A LOT from people – “should I go to Dreamforce?”

Of course, my initial reaction is “uhhhh…yes!”, but there are some great reasons why I *do* go and why I *don’t* go.  The reasoning for each person is absolutely different, but having some context to aid your decision is definitely a good thing.  *smile*

 Why DO I go?

#1  Networking and Camaraderie

Working with the Minnesota Developer Group, there are ~300 individuals that I can regularly network with for new ideas, approaches, and technologies, but we all have something in common:  we’re all here and in a lot of the same circles.  Being able to just strike up a conversation with a random person who happens to be hovering near a vendor booth you are eyeing has yielded some of the most worthwhile and contextually awesome conversations that I have ever had about Salesforce.

#2  Collaborative Learning

Apart from attending sessions, I had also volunteered recently at the MVP “Ask the Experts” booth.  I very much enjoy helping others with questions, but at the same time very seldom do you help someone and NOT walk away learning something – technology, approaches, or use cases.

#3  Bluntly:  Drinking the KoolAid!

As silly as it sounds, everyone needs some topping off.  Upcoming products and features are excellent, but just the raw energy radiating from Moscone gets your brain engaged.  For the most part, you are unplugged from “the day job” and can focus on expanding your toolset and honing your skills instead trying to balance that while racing to the next client issue.

Why DON’T I go?

#1  The parties

Yeah, there is a lot of nightlife and I always end up walking away with some hilarious story about “remember at Dreamforce when we…”, but me personally…I can’t stay out all night and still be sharp enough to enjoy the next day.  It’s only a few days!

#2  “Seeing the sights”

If you try to catch a trip to Alcatraz or some other destination during the week – while awesome as it sounds, you will fail and regret both experiences.  Save the sightseeing for the following weekend or just another time.

#3  To escape reality or wander aimlessly (not have a plan!)

Despite all of the glitz and glamour, I go to Dreamforce to learn and discover.  My career and clients depend on my knowledge and ability to bring new and different solutions to common problems – if you don’t walk out each day learning something, you have wasted your time.

If you’re going – shoot me a tweet (@andyboettcher) and let me know, maybe I’ll see you at an interesting vendor booth….*smile*

Who’s ready for Summer ’14?

Summer14T’was 72 hours before Summer ’14,when all through the ‘form

Not a developer was silent, not even the new guy Norm;

The features were dangled from the 321 pages of release notes with care,

In hopes that Uncle Mark soon would be there.

Ok, enough of that.  =)

Who’s ready for the release?  The last few releases have been absolutely chock-full of new features and Salesforce is showing no signs of slowing down, which is both exciting and really scary at the same time!

I could fill pages upon pages about the cool things coming out in Summer ’14, but here are just a few of my highlights:

  1. Description field added to Network IP Addresses
  2. Publisher Actions now available in Outlook Side Panel
  3. External Id limits raised – from three (3) to seven (7) per object
  4. Workflow/Assignment/Auto-Response/Escalation limits raised – from 300 to 500 per object (EE), and 1000-2000 per organization
  5. Trigger-ready Flows!
  6. Sandbox license types are automatically synchronized on add/remove
  7. Salesforce File Sync is GA
  8. Remote objects!
  9. Change Set deployment can now be tracked on the Deployment Status page
  10. Ability to create Price Book Entries in Unit Tests (and query for the standard price book!

What are some of your favorites?  Sound off in the comments below!

See you on the other side of the release!

Rolling back a Sandbox Refresh

Who hasn’t this happened to…you’re working a project and either someone at the company, another employee, or another consultant refreshes the sandbox without letting anyone know and unless you’re using Eclipse or Mavenmate, your work is gone.

This happened to a colleague of mine yesterday and my first reaction was, “oh that is horrible, sounds like you’re screwed.”  How wrong I was!

I didn’t believe it either when someone told me, but having worked through the process with Salesforce support with my colleague yesterday – I can testify to this being accurate and true!


Yup!  Salesforce can roll back an activated sandbox refresh if you meet the following criteria:

  • There is a clear business case as to why this needs to happen
  • You are within 72 hours of the new sandbox activation
  • You log a Case with support outlining your Prod and Sandbox org Ids
  • You are very nice to the support rep and answer their calls *laugh*
  • You have a better chance at getting this done in the necessary time frame if you have premier support, but the whole process took only a few hours

Now, I wouldn’t advise this as a normal addition to your disaster recovery plan, nor would I invoke this unless an absolute emergency, but it’s nice to know that if you were silly and didn’t have any kind of backup plan while developing (*giggle*) that you have a worst-case scenario option.

Code on!

Installing Mavensmate on Win7 64bit

**** NOTE *****

Since the posting of this article, MavensMate has completely overhauled their Windows installation process to use ST’s Package Manager.  It’s a vastly superior solution than what this article was created to help work through.  Please visit MavensMate’s installation guide at to learn more!


Hello everyone!

I’ve been on a bit of a blog hiatus as of late – learning new tools and processes, applying them to my toolbelt has been consuming my time as of late.

One of those tools that has been around for a while, but finally someone got it through my head to try out is Mavensmate by Joe Ferraro.

Built as a plugin for Sublime Text Editor 3, Mavensmate is a dream for editing code, using keyboard shortcuts to do so, working with code coverage, and getting in some Tetris during those long-running deploys.  =)

Installing MM on a Mac is a breeze, but a Windows7 64bit install took me two days to figure out.  My post here today is to help those who are trying to do the same thing not kill the same two days it took me.

1.  Sign up for a GitHub account

2.  Install the Git for Windows package per the instructions:

3.  Download and install Chrome

4.  Download and install Sublime Text 3 (32 bit only!  64 bit will NOT work!)

5.  Do NOT start the Mavensmate installer yet; you need to first generate and install the Git SSH key:

6.  Download the Mavensmate installer

Now – this is where it gets tricky…start up the Mavensmate installer but DO NOT PROCEED beyond the first screen.  If you proceed beyond the first screen the install will fail and you’ll be quite frustrated with an error message that doesn’t give you what the real problem is.

At this point – at the first screen of the Mavensmate installer, open up Sublime Text Editor 3 (32 bit).  When it finishes loading up, proceed through the rest of the Mavensmate installer.  You will see a “mavensmate” menu item appear in Sublime near the end of the install.

7.  Proceed with the remaining steps on the official Mavensmate Windows install page

That’s it!  You’ll be up and rocking with Mavensmate in short order.  I haven’t looked back.  =)