Sunday, December 23, 2012

Creating a Strategic Plan

A few weeks ago my boss asked me to put together a twelve-month plan for the CRM team. He wanted me to identify things like:

  • Areas where the CRM team are weak and strong
  • Ways to align the CRM team to the values of the business
  • Opportunities in the market to pursue

If you are given this task and never done a strategic plan before it can seem gargantuan but with a few tools, you can put together a plan like an MBA graduate without too much stress.

The Mantra of the Strategy Plan

Any kind of strategic roadmap-type plan seeks to address three questions:

  • Where are we now?
  • Where do we want to be?
  • How do we get there?

I generally add these headings in the document and tackle them one at a time.

Where Are We Now?

I break this up into the external analysis (what is happening outside of the organisation) and the internal analysis (what is happening within the organisation). In the case of being a reseller, I also consider the external and internal analysis of the product i.e. for Dynamics CRM, what external factors are affecting the product and what factors within Microsoft are driving the product.

For the external analysis there is the very useful PESTEL analysis (or one of its variants). PESTEL stands for:

  • Political: Government policy affecting operations/product
  • Economic: Economic factors affecting operations/product
  • Social: Cultural aspects affecting operations/product
  • Technological: Technology changes affecting operations/product
  • Environmental: Climate and weather factors affecting operations/product
  • Legal: Laws affecting operations/product

I generally brainstorm anything that comes to mind that may have a bearing on business in the next five years. For example, whether businesses are moving to the cloud or not is a technological factor that could affect operations.

Once you have the PESTEL analysis laid out, you may also want to consider aspects such as the strengths and weaknesses of your competitors or, in the case of a product, the strengths and weaknesses of competitive products.

When all the external factors are documented, it is time to consider the internal factors which affect operations. For example, it may be the strengths and weaknesses of the CRM team or the values of the business which the CRM team are expected to follow. Perhaps it is the industries the CRM team have worked in and how a strong vertical presence may be an advantage in winning new work.

Where Do We Want To Be?

If your bosses are communicating a clear vision of where they expect the business to be and when, this is where this feeds in. If not, you can derive some potential directions using a SWOT analysis.

SWOT stands for:

  • Strengths
  • Weaknesses
  • Opportunities
  • Threats

Again, these are broadly considered internal (strengths and weaknesses) and external (opportunities and threats). We now feed the PESTEL factors into this and, to find a path for the future, we try to match up strengths and opportunities and weaknesses and threats. Directions will present themselves as ways to exploit opportunities using our strengths or mitigating threats by reducing weaknesses.

For example, let us say from our external analysis we know that none of our competitors have a Business Intelligence (BI) practice and from our internal analysis we know we do. Our strength in BI now presents a market opportunity if, for example, the market is interested in BI tools for their CRM system. We are uniquely positioned to serve this need.

For those factors which do not provide an insight into a potential direction, we can remove these from the document.

In my case I derived about half a dozen Strength-Opportunity pairs and half a dozen Weakness-Threat pairs. Using the direction provided by my boss I filtered these down to directions aligned to the larger goals of the business.

How Do We Get There?

The final step is putting together some meaningful actions to head in the right direction. I generally set for each ‘direction’ a 0-12 month action (broken into four quarters), a 1-5 year ‘action’ and a 5 year plus ‘action’. Obviously each action feeds into the action for the next timeframe. So, in the case of the BI opportunity, out first four quarters might be:

  • Quarter 1: Liaise with the BI team to see if they are keen for a joint venture
  • Quarter 2: Put together a cross-function team to develop a trial offering
  • Quarter 3: Offer the trial to existing clients as a free product on condition of regular feedback and thoughts
  • Quarter 4: Incorporate initial feedback into the offering and liaise with marketing to promote it

This then feeds into our 1-5 year action which might be “having a market-ready BI offering for Dynamics CRM”.

Our 5 year action may be “be the market leader in BI for CRM”.


Obviously not my usual blog topic but if you need to put something together to give you a bit of direction on where to head either at work or maybe even for yourself, this might give you a few ideas on how to approach it. My advice is start with the PESTEL and you will soon find the rest falls into place. Good luck.

Sunday, December 16, 2012

A Couple of Form Security Tricks

Forms have come a long way in CRM 2011 and here are a couple of tricks I use a fair amount.

Hiding Locked Fields

Some forms have fields which simply cannot be taken off the form. A good example is the Account Name field on the Account entity.


While we can stop the field from being compulsory, by going to the field settings, we cannot remove the padlock indicating it is locked to the form (and any other forms we create from this one).

The solution is we hide the field in a hidden section. If we create a new section on the form, we can set its properties to be not Visible by default:


All we then do is drag our locked field to this hidden section and we no longer see it on the form.



Please note: If you put a compulsory field in a hidden section and try to save the record it will automatically expose the hidden section so you must make the field not compulsory for this to work (or autopopulate it via jscript OnSave). Also, as in my example, if you are hiding the default name attribute, populate it by using either a jscript or workflow because, otherwise, any child record will show a blank lookup reference, which can be confusing for users.

Dodging Compulsory Fields

Let us say you have a two-step process for handling cases. The call center team receive the emails, quickly reply to the simple queries and convert the trickier ones to Cases for the resolution team. The resolution team then get into the details of the Case and resolve it. It is conceivable that the call center team will not need to know as much detail as the resolution team and, being a team which is dealing with high volumes of queries, simply do not have the time to get bogged down into finding out the important information. It makes more sense for the resolution team to find this information out as part of their investigation.

In version 4, this meant we had a problem. If there are key fields on a Case form needed for things like business reporting, assuming they are compulsory, they must be filled out when the Case is created. Even today, many consultants will tell you to get around the problem we either relax the compulsory nature of the fields or write some tricky jscript to check the role of the user and tweak the fields dynamically.

With 2011 there is a little known alternative approach using forms. As you may know we can create multiple forms for a given entity and assign them to different security roles. We can even create roles with no actual security rights but use them as a way of giving forms to users.

In our case, let us create two forms: one for the call center users and one for the resolution team. We will take the detailed form with all our compulsory fields on it and ‘Save As’ to act as a template for our call center version. The problem comes when we try to remove the compulsory fields; the computer says ‘no’.


To get around this, we do a bit of a supported hack/workaround. We go to the field in question, make it non-compulsory, come back to the form, remove it and then make the field compulsory again (you will probably need to publish the changes between these steps as well).

The net result is we have a form with a bunch of compulsory fields missing from it. What is great is the form does not complain when the call center staff use it and hit the save button; it seems saving only checks the fields on the form in visible and hidden sections but not the fields off the form. This means the call center can create the seedling of a Case, assign it to the resolution team and, because the resolution team only have access to their detailed version of the form, they are forced to fill in the rest of the compulsory fields. No code needed and no compromise to what the business needs to capture.


If you are looking at form design and working with forms for entities like Cases or Products, you may have come across the kinds of problems mentioned above. With any luck these tips might save you some angst and code writing, enjoy Winking smile

Sunday, December 2, 2012

CRM: Culinary Recipe Management and Socialisation

In the spirit of my CRM Adventure Game and CRM Hangman I now present using CRM as a recipe database. This is a pre-cursor to my ultimate dream of creating a CRM cocktail database.

There is not much of a lesson here (although I do propose a very practical business use for this a little later on) other than it is something I wanted to do to show the flexibility of the platform (and because I am now doing the cooking in the house and wanted a way to ask “If I have ingredient ‘x’, what can I cook”). As usual, everything I have done here I have done without code and all up has only taken a few hours at the keyboard while watching TV.

The Structure


Pretty simple stuff, although I will likely extend it as time goes on.

Essentially, we have a recipe with ingredients. These ingredients are basically a food item with a measure e.g. 1 teaspoon of vanilla essence. A recipe also has equipment used to make it.

The Screens: Recipe


Not much to report here. I added the grids to the form to make data entry easier and at the bottom I added a multi-line text box to store the instructions.

The Screens: Ingredients


The complication here is I did not need the default text attribute. To get around this I added a new section, made it hidden by default, made the default field non-compulsory and set up a workflow to populate it when the record is created or when the Measure or Food Item fields change.


“To Serve” marks if the ingredient is a garnish or not a key component of the recipe.

The Screens: Food Items and Equipment



Again, simple stuff.


One thing, which is always a hassle when putting together recipes is the shopping. Thanks to the Reporting Wizard, I can now select the recipes I am cooking for the week and generate a list of ingredients to check against the pantry and work out what I need.


I added in the Serves column because different recipes serve different numbers of people. I could have scaled the recipes to a common unit or split out the numerical component of the Measure field and done something clever by feeding it the number of people I am cooking for and scaling the values with code but this requires effort so I have left it as an exercise for the keen. For now, to use as a list to check what I need, it does the job.

Using Mobile Express, I can also access all of my recipes on my IFD-enabled or Online version of CRM anywhere. Very useful for clarifying whether a recipe needed dried or fresh herbs, for example.

Other Ideas

Other things I have thought of but not implemented are:

  • Adding Calorie information to the Food Items (and then bringing this down to the Ingredients and rolling it up to the Recipe to get the total Calories in the meal)
  • Linking Food Items to each other to record substitutes (or possibly using Connections)
  • Adding matching wines to the recipes
  • Incorporating Food Pairing to create completely new recipes

Using CRM For Socialisation

While this and the two games I previously put together are a bit of fun, there is a way you could use this for business in fostering a collaborative culture. The recipe configurations could easily be incorporated into a production CRM system. Why would you do this? To bring people together. A recipe database is something people can contribute to for the fun of it and give them an opportunity to discuss cooking tips in the office.

The rule could be all new starters must add a recipe to CRM. This gives them an opportunity to learn the system as well as letting others in the team know a little bit about them. Maybe it could form the basis of an office cook-off.

Alternatively, perhaps your team are keen gamers or movie buffs. If so, why not add a review section to the CRM system. Maybe you want to add a swap-meet section so people can sell old items through the corporate CRM system and deliver them through internal mail in the name of bringing people together.


The Dynamics CRM platform is very flexible and allows us to store organised information for practically any purpose with little, if any, coding. While a recipe database may not the obvious choice for an enterprise CRM system, it is easy to implement and provides a reason for people to come together through something other than the daily grind. However, if recipes are not your thing, try something else. The only limit is your imagination and the courage to do something different for the greater good.

Sunday, November 25, 2012

Salesforce Third Quarter Results for 2012

Another quarter and despite it, again, being represented as a solid result, the fundamentals have deteriorated. As usual, I stick mainly to GAAP (Generally Accepted Accounting Principles) results which Salesforce presents to the Securities and Exchange Commission (SEC) rather than the non-standard results presented by Salesforce to the public. There will be one significant exception for this quarter which is a $149 million tax offset but we will get to that in a bit.

Earnings Call Buzzword Bingo

As we did last quarter, let us see what is on the minds on Benioff and Smith this quarter.

This Quarter’s Keywords (total words: 3000) Last Quarter’s Keywords (total words: 3200) Last Year’s Keywords (total words: 3400)
revenue (38 times) revenue (39 times) revenue (31 times)
cloud (20 times) social (21 times) social (23 times)
growth (17 times) cloud (20 times) cloud (15 times)
customers (13 times) growth (19 times) growth (14 times)
social (13 times) cash (17 times) enterprise (13 times)
marketing (10 times) operating (17 times) sales (12 times)
service (9 times) service (15 times) customers (9 times)
cash (9 times) enterprise (10 times) chatter (8 times)
sales (9 times) customers (9 times) expense (8 times)
customer (8 times) dreamforce (9 times) heroku (7 times)
enterprise (7 times) marketing (8 times) subscribers (6 times)
mobile (7 times) sales (8 times) service (6 times)

Key phrases (two words or more) for this quarter included:

  • deferred revenue (14 times)
  • cash flow (9 times)
  • revenue growth (6 times)

It is fair to say revenue and growth are the focus for the CEO and CFO, as they always have been. As usual other key financial measures, such as profitability did not rate. However indirectly, as we will see further on, Salesforce have clearly communicated what they consider their future prospects for profitability are.

New Topics

The only new topic on the list is ‘mobile’; a hot topic in CRM as people move beyond the laptop/PC.

Topics in Decline

As was the case last quarter, mentions of social are down about one half from last year. I speculated last time this was due to the backlash against 'Salesforce using the term ‘social enterprise’. Given that phrase was not said once this time around, in keeping with Benioff’s commitment to abandon the expression, this could be the reason.

Topics on the Rise

There is a focus on marketing, whereas this was not mentioned a year ago and is in keeping with their acquisitions of Radian6 and Buddy Media.

The Big Write-off

Before I get into the financials, there is something that must be addressed. If you look at the numbers, you will see Salesforce has put aside $157m for taxes (a number well outside of historical norms) and this has led to a quarterly loss of $220m and a financial year to date loss of about a quarter of a billion dollars. Given last year’s loss was $11m, there is something clearly out of the ordinary here.

This is how CFO Graham Smith described it:

“Our GAAP results this quarter include the impact of a onetime, noncash charge of $149 million to establish a valuation allowance against our federal and state deferred tax assets.”

“Deferred tax assets on the balance sheet represent the value of tax deductions and credits to offset future tax liabilities. These assets include net operating loss carry-forwards, R&D credits and book/tax timing differences, such as accrued liabilities. U.S. GAAP requires companies to regularly assess the realizability of deferred tax assets by evaluating certain criteria. These criteria include whether the company has a cumulative 3-year historical pre-tax GAAP loss, as well as the timing and likelihood of near-term GAAP profitability.

After performing this analysis in Q3, we determined that a valuation allowance was required as near-term realization of these assets is unlikely. But just to be clear, our deferred tax assets have expiry dates many years into the future. And so we do anticipate being able to use these assets at some point to offset perspective tax liabilities.”

If you are like me, you did not understand a word of it. The best article I can find on deferred tax assets is this one from the Motley Fool. This is my interpretation of the situation. If you make a loss as a company you get a tax credit with the idea being that when you finally make a profit, you can offset the tax you would normally pay with this credit. On the accounting books this tax credit is carried as an asset because, in some ways, it can be thought of as a bag of money standing by to use to pay taxes in the future.

However, what if a company never makes a profit? In this case the asset will never be realised i.e. the credit will never be used and having it on the books is misrepresenting the true value of the organisation. To keep the asset value of a company accurate, the government has put in place certain ‘triggers’ which mean a company must assess the likelihood that such an asset will be used, if one of these triggers goes off. In the case of Salesforce, the trigger was making a net loss over the past three years. Yes, despite all this awesome growth, Salesforce has lost more money than it has made over the last three years.

Salesforce has reviewed the likelihood that they will use this asset i.e. make a profit and determined that $149m of this tax credit will never be realised. This can also be seen in the balance sheet where ‘Deferred Income Taxes’ has gone from $165m down to $21m.

So to make this clear, when Graham says “near-term realization of these assets is unlikely” he is saying “we are not going to make a profit any time soon”. He then makes the plea that at “some point” they will use it but, frankly, if there was a reasonable prospect of using them, they would not take them out of their assets. You can stretch your optimism in an earnings call but the government require you to be practical.

Ultimately though this is a write-down and does not reflect their current business operations (more their future prospect of making a profit) and so I have removed the expense from my financial calculations below. We will see, even with this item eliminated, things are not rosy when we look beyond revenue growth.

Revenues and Costs


Green is cost growth year-on-year and red is revenue growth year-on-year. As Benioff mentioned, year-on-year revenue growth came in around 35%. What he did not mention was that to achieve this, they had to grow expenses by 42%. This is disappointing. In the previous four quarters they had successfully tempered cost growth and brought it back to the same rate as revenues. Unfortunately, it seems to be impossible for Salesforce to reduce the rate of growth of costs to below that of their revenue and therefore head towards profitability. We can see why they needed to write down their deferred tax asset.


In terms of absolute numbers, the only notable change is the larger loss. Excluding the write-off, the loss to the business for this quarter was $70m. This is a larger loss than the previous five quarter losses combined. The largest profit made by Salesforce in a quarter was $21m this time two years ago (and also back in 2009). So this quarter’s loss is more than three times the largest profit ever made in a quarter.



Some of you may remember my log scale graph from last year. While the shape is similar, the difference here is this is not a log scale. nothing is being stretched here. The fact of the matter is, even with the massive $149m write-off removed, margins are plummeting, down to –9% this quarter. In other words, for every dollar they spend on generating a sale, they return around 91c. we are now at a point where Salesforce is selling $10 notes for $9.

Staff Numbers

Marc mentioned that staff numbers were up 34% from this time last year, which is true. What he did not mention was this is the slowest rate of staff growth in two years. Around 40-50% year-on-year growth has been the norm for the last year or so. In other works, staff growth appears to be tailing off.


Despite a deterioration in profitability, this has not deterred Benioff on his focus on revenue growth at all costs, literally. My hope last quarter was that Salesforce would return to profitability but this is unlikely to be the case any time soon. This deterioration of position is confirmed in the declaration of the CFO that Salesforce will not be making a profit in the near future and the subsequent revaluation of their ‘tax credit’ asset.

As usual I hope Salesforce can turn things around as competition is a good thing. If not they will continue to bleed money and dig themselves a hole that it will become increasingly harder to get out of.

Tuesday, November 13, 2012

A Stellar Roadmap for Dynamics CRM?

The past six months have not been the steadiest of courses for Microsoft and their CRM product. Microsoft announced grand and exciting plans, as discussed last month. Dynamics CRM partners and MVPs were frothy at the mouth with the new things coming and many could not believe Microsoft had transitioned from their traditional three-year cadence to a six-monthly one and still managed to deliver such bounty.

As it turned out it was too good to be true and at the eleventh hour Microsoft pulled some of the more exciting features delaying them for six months.

After regrouping, Microsoft have released their new and improved roadmap for the upcoming December 2012 Service Update (called ‘Polaris’) and the one after this to come mid-year 2013 (called ‘Orion). I thought it would be a good time to see what they have planned for these two releases.

The November 2012 Statement of Direction

If you want to read the latest roadmap and read about Polaris, you can do it here. There is even a promotional video showing Microsoft’s Dynamics CRM / Windows 8 vision. These are my take-outs from the Statement of Direction.

The Charter

To make it absolutely clear that Microsoft has a set of guiding values and principles, they called out their CRM ‘Charter’.


I personally like it. There is nothing concrete here e.g. when specific functionality will be delivered and this is as it should be. These are simply the values which Microsoft are calling out as their criteria for including or excluding features in the product.

For example, the ‘Ubiquitous’ values make it clear that Microsoft will not go down a path of ‘lock in’ with Internet Explorer or design CRM to only work with a keyboard. If the use of Kinect as an interface becomes popular, this value also embraces that as a choice. If the business world starts using RaspberryPi devices, Microsoft has a clear charter to build CRM for these as well.

In terms of exclusion, the ‘Productive’ values make it clear the plan is to bring further integration between Dynamics CRM and ‘the stack’ (other Microsoft products). This means that products like Lync and SharePoint will become more intimately entwined and, while there will be ‘hooks’ available for alternatives, this will not be an area of strong investment.

Investment Areas (Polaris)

Both the Statement of Direction and Release Preview guide talk at the areas of investment for the upcoming releases. These are broken down into:

  • Applications (sporting a picture of a Windows Phone with ‘apps’ icons)
  • Experiences (showing someone operating their Windows Phone and slate)
  • Platforms (showing an oil rig platform. Seriously, what?!?)

The Polaris summary graphic gives the highlights:


Here are some of the major call-outs:

  • Applications
    • Configurable sales and service processes: Think Solution Selling or at least a Microsoft version of it
  • Experiences
    • A UX to match the process changes


    • Yammer integration: While the Record Wall was nice, now we have a true Chatter contender. Security management will be interesting
    • Multi-browser support: IE, Chrome and Firefox on Windows, Firefox and Safari on Macintosh
    • iPad support (although they are saying only for the sales process)
  • Platform
    • Skype built in: I imagine this will be click to call, like the free Skype add-in for Dynamics CRM 2011, but will not pop up boxes for incoming calls. I hope I am proven wrong
    • New bulk data API: This means we should be able to get imports at rates higher than 50 records/second. That is fantastic news for projects with big data sets to import
    • Custom workflow assemblies for CRM Online: Bringing it in line with On-Premise deployments

Investment Areas (Orion)

Thanks to the CRM User Group (CRMUG) and new CRM MVP recruit Chris Cognetta we have the Orion summary graphic:


Given Chris assures me this has been presented at CRMUG, it should not be in violation of my MVP NDA but, if it is, I am sure Microsoft will let me know and I will take it down.

Interesting items mentioned here are:

  • Exchange server synchronisation: This used to be in v1.0/1.2 but was abandoned all those years ago. It looks like it is back
  • OWA and MOWA support: So many times I get asked if CRM works with the Outlook Web App (OWA) and have to say no. In six months this may not be the case
  • Integrated marketing management: Given Microsoft just acquired MarketingPilot, which appears to be quite a comprehensive little package, this could be what they are referring to here. If so Core Motives, Click Dimensions and Exact Target must be very nervous

Other Stuff Hinted At

Things mentioned in the Statement of Direction but not explicitly called out for the Polaris or Orion release are:

  • A new ‘agent desktop experience’ for Service: I am wondering if this is an overhaul of the old Customer Care Accelerator
  • Centralised administration for CRM and Office 365: Unfortunately this is unlikely to be case in the short term for Australia due to third line reseller entanglements
  • Lync integration: Likely to be similar to the Skype in that is will be call out but not inbound pop-up enabled for CRM (again, happy to be proven wrong)


One thing which interests me is the clear shift from creating a ‘process platform’ to a sales/service tool with configuration capabilities. From a marketing perspective this makes sense as it is much easier to show a tangible sales process than a set of configurable tools to match any work process. Whether the xRM capability of the platform will be compromised by this is yet to be seen.

On a more positive note, to be honest, this is the first time in a while I have confidence that Microsoft have a clear direction dictated internally and not by the competition. Microsoft are defining a clear path, separating them from the competition, rather than saying “Us too!”. Microsoft are not pleading their cloud credentials or trying to tell us how social they are. They are simply stating the values driving them and the features they are bringing to their product to support these values. I applaud the new approach and wait eagerly for Santa Ballmer to deliver his goodies.

Sunday, November 4, 2012

50 Shades of CRM: The True Story of the CRM Field Guide

This is the history (and a bit of a book review) of the CRM Field Guide ( To paraphrase a much greater tome, to tell the story of the book it is best to tell the story of some of the minds behind it.


On the 9 December, 2009 George Doubinski, a CRM MVP whose generosity is only matched by his dry Russian wit, wrote:

“Hi MVPs,

I’m probably one of the least qualified people on the subject yet for some inexplicable reasons I’ve been approached by one of the publishers about writing a book about new version of CRM. Writing a book, as some of you will vouch, is a tedious and time-consuming exercise. If you are looking for a return on investment, your time will be better spent flipping burgers. Genuine love of writing,  glory (albeit, a minimal one) and vanity are the only true reasons to even contemplate writing anything.

Having considered that, I still think that “MVP Cookbook on Microsoft Dynamics CRM 5” is not such a bad idea. Collection of recipes coming from people who do know their stuff.

I’m sure some of you have already been approached in the past and may have refused the offer of writing a book but a contribution of just one or two chapters is a significantly smaller effort and might just work. So if you believe that it’s not a scheme heading for an absolute disaster, please get in touch with me off the list.

Note that you will have to have access to CRM5 TAP with a signed NDA, of course.



Despite many positive responses, essentially nothing happened for about a year. Then on 13 August 2010 when, undeterred by the apathy of his comrades, George wrote:

“If you recall I floated idea for MVP cookbook some time ago after being one of the many approached by the same publisher… A few of you have responded and expressed the interest to participate and believe me, I have not forgot, simply was running inside the hamster wheel for a while. And with 2011 upon us, we probably need to re-group anyway.”

At this point I, and others, jumped on the book bandwagon. I wrote a chapter on workflows and dialogs and others threw in their bits and pieces.

Unfortunately the progress of others was slow and after yet another year all we had was three chapters (including mine) totalling about 150 pages of unedited content. The vision of an MVP-written book on CRM was fading.

By the end of 2011, CRM MVP Donna Edwards made one last-ditch attempt to restart the MVP book engine. Here is an abridged version of her email:

“As most in this email thread are aware, we kicked off a CRM MVP book project about a year ago.  We hit some bumps in the road and stumbled a bit but the good news is we are back on track with a stellar group of contributors.  If you are included in the To: line above, then you agreed to contribute one or more chapters to the CRM MVP book.  What an awesome bunch of individuals and I am thrilled to have each of you onboard!

Below is the list of book sections, chapters and authors.  As you will see, we have a great lineup and I think a good matching skillset for each chapter.  I hope you are all happy with the identified content.  Please contact me if you think we’ve missed something critical or have another chapter you’d like us to consider including.  As it stands now, the book should come in at over 600 pages”.

With Donna and Julie at the whip, not only did 19 CRM MVPs produce a book but it managed to overtake the 600 pages, eventually coming in at 940 pages.


Despite my hideous bias, I think it is fair to say the book is comprehensive in its coverage. Topics include:

  • Server/Client installation
  • Security setup
  • Report development
  • Integration
  • Configuring CRM and packaging configurations in solutions
  • Data management
  • User adoption strategies and tips from the trenches

It is also fair to say that, given the broad scope, there are areas where it is shallow in depth. For example, there is little code in the book (however the chapter on solutions is, by any measure, comprehensive). Similarly, my chapter of processes covers the essentials but, in terms of using processes you could write a whole book (and Richard has).


Obviously, given I wrote a chapter, count most of the authors as friends and receive a cut of the sales, it is difficult for me to review the book without some conflict of interest. However, I do believe there is something for everyone. If you or your team need to have a broad range of skills, in regards to Dynamics CRM, this is a great pdf to add to your reader. If, in reading the field guide, you determine there is an area you need to dive deeper, you can select one of the more focussed books in the market.

In terms of the quality of the content, it is difficult to argue against the pedigree of the authors, given they are all CRM MVPs and, moreover, we all got to pick the CRM topic we are passionate about or have strong knowledge of. In my case, I have a passion for processes in CRM, if only because they give me the power to make CRM do things only possible otherwise through code. However, I know precious little about the email router whereas Giorgio had written extensively on the router prior to the book and therefore was in a perfect position to create an informative, quality chapter.


While the book has literally been over 1000 days in the making, I believe the wait has been worthwhile. The book is the distilled wisdom of about 1/3 of the world’s CRM MVPs and from is only $49.99. It is fair to say even MVPs will learn something from this book (and I intend to).

If you want to try before you buy, I do run the CRM MVP Gospel twitter feed (@CRMMVPGospel) which quotes a line from a random page in the book each week. While the feed may not change your world, it will give you an idea of the subjects covered in the book and who wrote them.

Once you have sampled its wares, head to and get yourself a copy. I doubt it will be as popular as “50 Shades” but, unlike that novel, the vast amounts you learn from it you can employ in the workplace without fear of permanent injury or scarring.

Tuesday, October 30, 2012

Making Records Invisible In Dynamics CRM

CRM security is very powerful but it does have its limitations. One is that while it is possible to give someone access to a record they could not otherwise access, via Sharing, there is no clear mechanism to turn off access to a specific record. For example, let us say I work for that famous imaginary charity ‘MVPs For World Peace’ and the celebrity ambassador for the program is Ray Tomlinson, inventor of the ‘@’ symbol for emails. It is possible the events team need to capture their communications with Ray and book him as a guest speaker. However, being someone of note, it is not appropriate for everyone to have access to his details. Similarly, other notable characters may join the cause and they would also need to have their details restricted to only the events team.

Perhaps with the pending American elections, certain big name politicians may join the noble cause and different sets of users (the public relations team, for example) would need access to their information while restricting others.

So how do we set up a system in CRM such that we can create groups of Contacts (or any other entity for that matter) which only certain people can access and add records to the groups, as required?

‘Version 4’ Security Options

Back in the days of Dynamics CRM 4 we had the following tools in our security toolkit:

  • Users can own records
  • Visibility is at the user, business unit, business unit and child units or organization-wide
  • Records can be shared with users and teams

To make records invisible on demand, we have to do something like change ownership of the record to a user in another business unit and use code to automatically share the record back to the users who are permitted access. The maintenance is messy and has the potential to clog up CRM with all the security exceptions that need to be tracked and constantly checked as records are accessed.

I have seen systems like this with literally millions of share exception records. They are unscalable and the only way to keep CRM functioning at an acceptable level is to constantly throw hardware at the problem.

2011 Security Options

The security model has changed slightly in CRM 2011 in that users AND teams can own records. Teams get a role assigned to them to determine they rights in regards to records so now all we have to do is set up the business units something like this:


In this scenario all users sit in the main business unit and have Business Unit access to all Contacts. Everyone can see all the Contacts in the system. We now create a child Business Unit and into it we add our restricted access teams (the Celebrity Team and the Political Team). These teams have a role assigned to them with user rights to Contacts. We also add the users to each team who we want to have access to the restricted records.

In the case of Ray Tomlinson, if his record is owned by a user, it ‘belongs’ to the Primary Business Unit and everyone can see it. However, if we assign it to the Celebrity Team, it now ‘belongs’ to the Restricted Access Business Unit which means no user can see it other than those who are members of the Celebrity Team and who have access to all records owned by the Celebrity Team. Problem solved, no code and no scaling issues.


There are many CRM 4 systems out there with complex code managing complicated security rules. If you are in this scenario, consider the new flexibility offered by the team ownership in CRM 2011. It is likely that by employing team ownership in creative ways, a lot of coding and maintenance time can be eliminated and CRM can be restored to a robust, scalable system.

Sunday, October 14, 2012

An Alternative Method For Data Enrichment

I recently had a problem with a data import. The data had imported fine but a few hundred contacts were not imported with their email addresses (the client had forgotten to update the source data). The client had an Excel list of email addresses and ID numbers (not the GUIDs but unique integers which were imported and matchable) to identify the correct Contact in the database. Now all we had to do was ‘enrich’ the associated Contacts in CRM.

The Problem

The supported option for data enrichment is to export the records from CRM you wish to update and then use the import wizard to reimport them.


The problem in this case was there was no simple way to isolate the records that needed updating. I could have exported all the Contacts in the system and used a vlookup but there were more than 10,000 and the export from CRM, by default, is only good for 10,000 records.

It is possible to increase this limit but, in this case, we were on a deadline and the bureaucracy meant I was motivated to find another way, ideally codeless.

I could have used a lot of “Contact ID equals ######” linked by a Group OR but, given there were a few hundred records, I did not fancy this option either.

The unsupported option was to make direct update calls to the database but I try to avoid unsupported solutions unless absolutely necessary.

The Solution

There was no way for the import wizard to update the fields on an existing record (without exporting first) but I could add a child record to the Contact. In this case, as it was unused in the solution, I used the Opportunity entity. I used the topic field of the Opportunity to hold the email address and mapped the Customer using the ID (mapping to the correct Contact using the ID is done like this).

On top of this I created a workflow which, on the creation of an Opportunity, went to the parent record and updated the Contact email address with the value in the Opportunity’s topic field.



The result is we import our file of IDs and email addresses in as Opportunities. When the records are created, the workflow kicks in and updates the Contact linked to the Opportunity.

All we are left to do is bulk delete the created opportunities and remove the workflow.

Suggested Improvements

There was one other complication not mentioned above which was we also needed to populate an ‘Email ID’ field for integration to a third party system. This proved a bit tricky as it was an integer field and workflow will only populate an integer field from a money, float or integer field, not a text field. In the end I used the Freight Amount field but it is conceivable that, in the general case, either there is no child entity to use or, if there is, it does not have the right field types for workflow to copy the values across.

In this case I would create a new custom entity with the right fields on it, populate via import and use the workflow to flow the values up to the parent record. A little extra overhead but still only 15-30 minutes work, no need to get IT Administrators involved and no Excel formula fiddling.


If you need to update records and

  • there is no simple way to isolate the records with an Advanced Find query
  • there are too many to manually update them
  • there are too many Contacts to export the entire list

This little trick will do the job. It is codeless and takes 15-30 minutes to set up and avoids the need for involving administrators, Excel formula, unsupported hacks or coded solutions.

Monday, October 8, 2012

Technology and Process and Building Trust

Trust is generated through experience. If someone says they will do something and consistently delivers, we learn to expect this will continue to be the case. This kind of consistency is referred to as ‘authenticity’.

I have talked before about the importance of authentic market communication. This was talked about over ten years ago in the Cluetrain Manifesto and is now part of multi-million dollar campaigns for companies such as Salesforce.

However, when it comes to living up to your promises, with so many ways to interact with customers, and, so many moving parts within an organisation, that can sometimes be hard. Even for those preaching the gospel to others.

How can technology help us ‘keep good’ on our promises or manage expectations when things go awry? Also, what should we do when we do fail to live up to our own standards?

Case 1: Microsoft’s Mobile and Cross-Browser Support for Dynamics CRM 2011

Back in February 2012, Microsoft put out some strong messages regarding the future of Dynamics CRM. Here is a copy of the old roadmap. Here is the summary picture of features to be delivered around the middle of the year.


This was very exciting and, like many partners, with new prospects we talked about the new features and when Microsoft expected to deliver them. The top three tiles in the picture are hot topics in CRM at the moment and resonated particularly strongly in presentations.

Then the sad news came in July, at the Worldwide Partner Conference, that some of the features would be delayed six months; mobility and browser flexibility. Official reasons are vague but reasons of ‘quality’ were cited. While I am not at liberty to expand on this what I can say is that the pre-release version, which was available to partners, was received very well and the reasons for the delay come down to coordinating the various components that make up the entire user experience and making sure this experience is the best it can possibly be. In short Microsoft apologised for a delay rather than deliver a frustrating process and disenfranchising customers.

The good news is last week at eXtremeCRM 2012, Microsoft has re-confirmed cross-browser support will be in the end of year update with a revised roadmap due any day now.

In this case, Microsoft made a promise then reset the expectation. Microsoft have communicated a clear deadline on which to deliver their new commitment. The cause, while vague, was some form of failure in the co-ordination of internal processes. Perhaps with better internal collaboration and communication e.g. using Microsoft’s SharePoint and Lync, the messaging to the market would have been set appropriately to begin with, avoiding the disappointment. One hopes Microsoft has learned from the situation and employed process and technology to avoid a repeat situation and to help meet the new deadline.

Case 2: Salesforce and the Social Enterprise

Back in 2011, at Dreamforce, Salesforce CEO Marc Benioff declared 'the “Cloud is dead” and the future is the “Social Enterprise”. What Marc meant by this was organisations will become increasingly reliant on social networks for marketing and will improve internal coordination and collaboration through technology. This was a strong shift in message given Salesforce had been ‘that cloud company’ until this point and was now aiming to become ‘that social enterprise company’. The idea of the ‘social enterprise’ was so strong that Salesforce sought to trademark the term in a number of countries, including USA, UK and Australia.

Unfortunately for Salesforce, the term ‘Social Enterprise’ predated Dreamforce by up to 30 years and meant an organisation devoted “to maximize improvements in human and environmental well-being”. Ironically, Salesforce’s 1/1/1 model is a great example of Salesforce being a traditional social enterprise.

An organisation vehemently opposed to Salesforce’s re-purposing of the term was Social Enterprise UK who established the “Not In Our Name” campaign and used those social channels to get their message out, eventually leading to the writing of an open letter/petition to Marc Benioff signed by various parties including a Nobel Peace Prize laureate.

A couple of weeks prior to the 2012 Dreamforce, at the start of September 2012, fearing protests, Marc announced Salesforce would back down with the quote being:

“It was never our intention to create confusion in the social sector which we have supported since our founding. As a result of the feedback we received, has decided to withdraw its efforts to trademark the term ‘social enterprise’ and plans to discontinue its use in our marketing.”

Salesforce should be applauded for seeing the light on this issue.

However, the removal of the term from marketing has not been as forthcoming. When Dreamforce started, the phrase was still a big part of the show.

Perhaps the two week lead-up from the removal announcement was not enough time to get the message out to the Dreamforce organisers. However, in the past month, while there have been some measures to remove the term from their marketing, there is still plenty of work to be done. For example, here is the Customer Success Site for different countries.

USA and UK (Customer Stories)


Australia, Germany, Italy and Spain (Social Enterprise Stories)



While Salesforce has changed the header for the USA and UK sites, they have not changed any other country I tried. Burberry may be totally connected but Salesforce’s messaging seems a little fragmented.

In this case I am not sure any more technology other than a cursory web search  and some internal collaboration was needed to avoid the situation in the first place. As for cleaning up the mess, Marc sent a clear message to the market but has only partly delivered on the promise. I can only imagine, in the case of a web page header that the cause is either:

  • A lack of coordination and collaboration i.e. not everyone got the memo
  • A problem with the technology i.e. fragmented systems which are taking time to update
  • A lack of will i.e. Salesforce has no intention of dropping the term from their marketing

I assume one of the first two are to blame. Salesforce could employ collaboration software to help manage the process such as Chatter and or, if it is the second one, look to use to house all their international web sites rather than, as may be the case, run them on isolated CMS systems. As with Microsoft, I expect Salesforce has reviewed the situation internally and ensured process and technology are in place to reduce the risk of it happening again.

The last option of a lack of will would be truly inauthentic and, given Salesforce understand the consequences of this in a social world, I doubt this is the reason. However, to avoid this perception in the market they should look to addressing the situation as quickly as possible.


No one wants to be thought of as a fraud, inauthentic or untrustworthy. However, even the best of us say one thing to an audience and have to revise our position at a later time. In the cases above, we have two organisations who set themselves a path but found they had to change their direction due to unforeseen circumstances. While tools, such as collaboration software, can help minimise these situations from occurring and be part of the solution for cleaning up the fallout, change is inevitable. The best we can do is learn from the situation and employ technology and process for better control in the future.

Ultimately, the measure of these companies is not that they had to reposition themselves, or the technology they use, but how they handle it. In the case of Microsoft, a new deadline has been set for delivery of the features and they will be measured accordingly. In the case of Salesforce, while a new marketing direction has been locked in, there is still no deadline for when the ‘social enterprise’ phrase will be removed. If they do not set an expectation, their audience will, outside of Salesforce’s control, which is unlikely to end in a positive outcome.

In other words, while technology can help manage our business better and promote internal consistency, we must always consider whether we are being perceived as authentic and this can only come from setting clear, measurable promises and delivering on them (SMART goals). In terms of delivering the features for CRM, Microsoft has done this. In the case of Salesforce, their new goal is not SMART as it is lacking a time component and this needs to be addressed to reduce the risk of damage to their reputation.

Saturday, September 29, 2012

The Selected Item Cannot Be Tracked in Microsoft Dynamics CRM

I had an interesting problem this week. For one project we are at the ‘pointy end’; go-live is upon us and training is underway. The client is loving the Outlook integration and so, while I normally train through the web client, in this case, it was done through the Outlook client.

Everything was going fine. As is often the case there had been some feedback from those in the room regarding their security privileges and what they would need to do in their role and these would need to be tweaked.

At the end of one session one of the users reported not being able to track appointments. Sure enough, they created the appointment in Outlook and when they right-clicked and Tracked, the error reported “The selected item cannot be tracked in Microsoft Dynamics CRM.Item Name=<Appointment Name>”. Usually when there is a security permissions error, the error shown calls this out but this was different.

What was also strange was if I opened the appointment it claimed it would be tracked once it was saved which, of course, it already was. Forcing a CRM sync tried to track the item but produced the usual ‘unable’ error.

Checking the user’s permissions everything checked out. They had User Delete and Create for Activities so they could untrack and had basic access to the Service Calendar entities to allow for the tracking of Appointments.

So I thought I would try to add an appointment and track with the trainer user account, which had System Administrator permissions. The result?

  • If I opened a Contact in CRM and created an appointment, the Outlook form opened, as per user permissions, and everything worked fine
  • If I created an appointment directly in Outlook and tried to track it through right-clicking on it in the calendar (the track button did not appear in the ribbon for it unless I opened the record) it produced the same error

This was a bit of a mystery and resorting to Google/Bing did not yield any joy either.

The Breakthrough

I remembered, back when I was playing with TwInbox that custom items in Outlook could not be tracked to CRM. I also noticed that rather than the usual ‘New Appointment’ button on the calendar in Outlook it read ‘New MeetingConference’, which looked plain wrong.

image(what the button should look like)

A bit of internet searching and chats with the client’s IT folk revealed they had, in fact, used a conference scheduling add-on for Outlook in the past but this had been abandoned quite a while ago. It seemed its legacy was still within their standard operating environment (SOE).

Extensive playing about in Outlook to find the right setting eventually yielded gold. By right-clicking the calendar and selecting “IPM.Appointment” for the ‘When posting’ option, suddenly everything started working as expected.


All we needed to do was get the users to apply this setting in future training sessions, fix up those who had been in the class (about ten users) and adjust the SOE. Given the next training session was with the executives, I was glad we had discovered it sooner, rather than later.


Generally, if you cannot track an Outlook item into CRM it is going to be a permissions issue. Some things to check are

  • the Append To privileges for Users, Contacts, Accounts and whatever you want to Set Regarding to
  • Create rights for Activities
  • Appropriate access to the role Service Management privileges so CRM can write the appointment to the Service Calendar (using the privileges of a standard role such as salesperson is a good place to start)
  • User Activity delete permissions if you want the user to be able to untrack and remove from CRM

Failing this, it may be that Outlook is behaving in a non-standard way under the influence of an add-in. If so, see if you can create an Activity from a CRM record using the Outlook forms (this can be set in the user options on the first tab). If this works, given CRM spawns the correct form, it is likely the problem is Outlook has had its default forms messed with and this is where the problems lies.

Good luck and my hope is this post saves you a few hours of heartache troubleshooting Outlook-CRM tracking Winking smile

Saturday, September 22, 2012

Import Tricks For Dynamics CRM 2011

One of my most popular posts is from four years ago, Import Tricks For Dynamics 3.0 and 4.0. Having just done another multi-lingual import for a client, I thought this is a good time to update with my latest discoveries and tricks.

This blog is NOT a review of the features of the import tool as this has already been covered in multiple places elsewhere. This is a few tips and tricks when working with the import tool to make your life a little easier.

Templates and Lookups

A lot of work was done with the Import Wizard in 2011 and it is greatly improved. Back in version 4, there were two ways of getting data into CRM: the Import Wizard and the Data Migration Manager. The version 4 Import Wizard was not as powerful but much easier to use. The Data Migration Manager was a little unfriendly but potentially quite powerful (or so I was told, I always managed to get away with using the version 4 Import Wizard). In 2011, there is no longer a Data Migration Manager but the power of the Import Wizard has greatly improved.

You can now import practically any entity and CRM will provide you an Excel-compatible XML template to use which tells you handy things like field lengths and which fields are mandatory. You can also import lookup fields and link off any unique value you like. For details of both of these features check out this previous blog post of mine.

One thing that I will add to my previous post is that, while you can often click the Import Data down triangle and get a template, the behaviour is not always completely consistent.


Therefore, if you are having troubles accessing a template for a specific entity, you can always go to Settings – Data Management – Templates For Data Import and download any possible template from there.


Information That Cannot Be Imported

Unfortunately it is still not possible to import non-printable characters such as carriage returns and line feeds and these must be stripped out of things like the description text before importing. In my most recent import, the data came from an Oracle source and had SYN signal characters through it which caused no end of grief until they were purged. My old Import Tricks For Dynamics 3.0 and 4.0 post has an Excel formula for removing such characters, once you have identified the column, if this is causing you problems.

While you can now bring in the Owner of the records, you cannot bring in Inactive records (***STOP PRESS*** See Jukka’s comment below for how to work around this). While the template and mapping allow you to select ‘Inactive’ as an option for the Status Reason, the records will fail on import as the Import Wizard assumes all records have a Status of Active and the combination of an Active Status and an Inactive Status Reason is forbidden. My workaround was to create a new Status Reason of ‘Inactive_Temp’ for the Active Status. I also created a workflow which, when a record is created, checks the Status Reason and, if it is ‘Inactive_Temp’, deactivates the record with the Change Status step. This completely automated the importing of inactive records once I had adjusted the mapping to import records with an Inactive Status Reason to be ‘Inactive_Temp’ in CRM.

Another thing that cannot be imported are relationships across N:N links. There is, however, a codeplex project by L33t coder and fellow CRM MVP Andrii Butenko (a33ik) which promises to get around this. I am yet to try it but I do have this requirement on another project so it may come in handy very soon.

The Old Chicken and Egg Problem

One of the problems I mentioned in my previous post was that Accounts and Contacts have a 1:N relationship with each other through the Parent Customer lookup on the Contact and the Primary Contact lookup on the Account. This always caused problems as, with the version 4 Import Wizard, you could link one but not the other. I am now told you can link both (I did not need to do it on this project). The trick is to zip both the Contact source file and the Account source file together and point the Import Wizard to this zip file.

There is also a system mapping for ‘Generic Contact and Account Data’. While I had some difficulties using this (but in the end did not need to) the idea is if you have a big spreadsheet of Contacts, you can use this as a source file to create both the Accounts and the Contacts at once. While untested, I expect if this had a Primary Contact column in it, CRM would do the right thing linking Contacts to Accounts and also populating the Primary Contact field.

Unicode Data

As with version 4, you can still import unicode data, allowing you to populate fields with Chinese, Korean, Japanese or any other unicode text. The xml templates generated by CRM are unicode compliant BUT Excel is really bad at dealing with unicode files. If you plan to save your xml file as, say, CSV, Excel will make this a non-unicode compliant CSV file. The only option you can save the xml file to in Excel and preserve the unicode data is ‘Unicode Text’ which is a tab delimited text file (which the CRM Import Wizard is happy to deal with and was the source format for most of my imports).

One ‘feature’ of Excel 2010 which was very embarrassing was if you double-click a unicode-compliant CSV file generated elsewhere, Excel opens it but strips out the encapsulating double quotes on the first column. The upshot is if the text in the first column contains a comma, this shifts that row’s data out of sync. This was embarrassing in that I was accusing the client of not encapsulating the data properly when it was simply Excel screwing it up. What is more bizarre is that if you open Excel and click File-Open… to access the file (rather than double-clicking the file in the folder) it treats the unicode CSV file properly and does not strip out the encapsulating quotes.

Size Limits

While most of the news with the 2011 Import Wizard is good, one very frustrating feature of the new tool is the source file size limit. Your source files cannot be larger than eight megabytes. This limit is really frustrating, especially with unicode files. You have no choice but to split the files into sets of, say 10,000 records and queue them up for importing. In my case I was only importing in about 100,000 records so while a little annoying it was not a show-stopper.

Here are a few tips for getting your files down below the eight megabyte limit:

  • The XML file, given it contains a lot of metadata about the source fields, is larger than a CSV or Unicode TXT file. Therefore, before importing, try saving your source file in a ‘simpler’ format
  • Delete empty columns as this can save a few hundred kilobytes from the file

Error Export Bug

There is a great feature in the Import Wizard where you can export the rows which failed to import. CRM will package these rows up ready for re-importing once you have sorted out the issue.


However, the feature has a bug. In my case one row had caused an error due to a lookup failure. I exported and noticed all the data had shifted relative to the column headers. My culprit was the first column which was the salutation field and this particular record had an empty salutation. Therefore, my suggestion is to ensure whichever column you have first in your source file, make sure it is always populated e.g. the Last Name field for Contacts. Otherwise there is the risk that the data will be corrupted i.e. shifted if you Export Error Rows.

Similarly, I did see occasion where the Import Wizard got confused, when reviewing the import file, by the number of columns because the last column was not completely populated (something that also used to happen in version 4). So I would also recommend the last column in your source file be always populated. Status or Status Reason are good fields for this.

Slowness of Importing

Any tool used to import data into CRM, if it is using supported methods, needs to go through the web service layer. Unfortunately, the web service layer can only insert one record at a time causing a bit of a bottleneck for mass imports. Discussions on the web indicate the best you can hope for is about 50 records per second. If validations come into play or you have a slower server, this can go down to 10 records per second or lower. In my case, depending on server load, I was getting as low as 3-4 records per second in some cases.

I know no way of improving this in any significant way, other than using unsupported import methods i.e. direct SQL writes which I would not recommend given the potential for long-term disaster. It is simply something to be aware of and plan for.


Overall, the 2011 Import Wizard is a great tool and a huge improvement over its predecessor. However, like the previous version, it also has a few peccadillos which can cause headache if you are not aware of them. My hope is, with the above, you can get your data into CRM and avoid too many problems.

Monday, September 10, 2012

Salesforce Second Quarter Results for 2012

You have played the quarterly conference call drinking game now it is time to look at the numbers. Is growth still king or has Salesforce moved its gaze towards reining in its costs?

Where Do I Get My Numbers From?

As usual all number are brought to you from the Salesforce detailed financials PDF. If the numbers in this PDF seem at odds to what you heard on the conference call or in the multitude of lazy media updates, this is because the numbers Salesforce push are their non-GAAP numbers. These are numbers which Salesforce believe more accurately reflect the health of their business but are completely unregulated. The numbers I use are the GAAP (Generally Accepted Accounting Principles) which use conventions enforced across all companies to ensure meaningful comparisons can be made and to ensure a base set of conventions are used across the reporting.

Try and Explain This GAAP/Non-GAAP Thing To Me One More Time

The biggest controversy is when it comes to profit. The non-GAAP revenue Salesforce reports is similar to the GAAP revenue but Salesforce turns its GAAP loss into a healthy non-GAAP profit. How does this work? The fourth page of the PDF tells all. Here is the summary of the big differences:

  • GAAP loss from operations turns into a non-GAAP profit
  • GAAP net loss turns into a non-GAAP net income
  • GAAP Diluted earnings per share goes from a negative to a non-GAAP positive

The big-ticket item that does this transformation is the ‘stock-based expenses’, at $85 million for the quarter.

What is Stock-Based Expense?

This comes from employee options. An option is a right to buy an share at a certain price at some date. In many companies, Salesforce included, options are given to employees to ‘align them’. The logic goes if an employee has the option to buy stock at a certain price, they are motivated to get the share price as high as possible on the date they can ‘exercise’ the option. The logic is reasonable but, as Warren Buffett points out, the difference between an employee option and a shareholder’s share is the employee spent nothing to get it; they have no skin in the game and nothing to lose.

From a GAAP perspective, working out what to do with options is easy. You value the options as if they have been ‘cashed in’ and treat them as an expense. Because the employee will give you money when they do exercise them, you also include the incoming cash in your cash statement. Other than the fact you have more shares in the pool and have therefore diluted the value of each individual share, everything, cash-wise, balances out.

The biggest difference in Salesforce’s GAAP/non-GAAP reporting is this ‘stock-based expense’. I understand the logic: “To see how sales is going, look at the customer transactions, not the employee transactions”. This is well and good but it does not remove the fact that to generate those customer transactions, options were thrown at employees and those options have a value, otherwise they would not have the power to ‘align’.

Salesforce are big at quoting revenue growth, non-GAAP profit and operating cash flow (see buzzword bingo for details). Revenue growth is real and cannot be denied. However, as mentioned in this article, the operating cash flow Salesforce quotes includes the value of the options value as a positive cash value but the non-GAAP profit does not include the expense. In other words, they recognise the money generated from the options in their reporting but not the expense. This is in no way illegal but can, understandably, cause confusion.

The questions to ask are simple: “If Salesforce reports non-GAAP to more accurately reflect the health of their business, why exclude option expense but include the related cash inflows?” and “If Salesforce are using non-GAAP for another purpose, what is it?”

But enough of my soap-boxing and onto the numbers.

Salesforce Made Another Loss (But Not As Big As It Was Last Quarter)

Salesforce halved their loss this quarter going from a loss of almost $20 million last quarter to $9.8 million this quarter but about double what it was for the same quarter last year. No loss is good so hopefully this is Salesforce turning a corner (as suggested by comparison with the previous quarter) rather than descending further into loss.

Salesforce is Starting to Control its Expenses (Sort Of)


This shows the percentage year on year growth of revenue (red) and costs (green). Before the start of 2010 (2011 Q1) revenue outpaced costs. Then costs started to blow out until their worst around the middle of 2011 (2012 Q2). This quarter gets us back to where we were two years ago with revenues growing faster than costs. Well done Salesforce. Let us hope this trend continues.


Margins, while still in the negatives, are also heading in the right direction, now at –1.34%. Another positive sign, although still negative.

Subscription Speculation

The good news is Microsoft have reported their CRM numbers, now having, as of July 2012, 2.7 million users and 36,000 companies using Dynamics CRM. This means the average company using Dynamics CRM has 75 users, about double my estimated average company size for Salesforce of around 35 users.

My prediction is Microsoft will break through the three million user mark some time around the end of this year (say November to January).

Again, using the Salesforce revenues as a guide, we can estimate the Salesforce subscription base at around 4.9 million users with just shy of 140,000 companies.

The subscription revenue continues to hover around two meaning Salesforce has around twice as many users as Dynamics CRM.


However, the actual difference in the subscriber numbers has flattened, although we have seen this flattening before, as per the chart below, just not for such a long period.



Salesforce is still on shaky financial ground. They are making a loss, but never talk about it, talking about non-GAAP profits and operational cashflows instead. However, costs are not growing as quickly as they were previously and, with revenues still growing there is the possibility Salesforce will return to profit in the future.

In terms of subscription, Microsoft still has about half the users of Salesforce but the difference is flat at around 2.2 million. It will be interesting to see if this difference reduces in the future.

My thoughts are it would be nice for Salesforce to be consistent in the messages they send out i.e. treat the stock-based expense consistently across their measures but that does not make for rosy numbers. However, even if their outward messages cause confusion there does seem to be an effort internally to control expense. Competition is good so the healthier Salesforce can make themselves financially the better for the consumer. As usual, I look forward to the next quarter to see if Salesforce can return to profitability.