Sunday, April 13, 2014

Treating Bug Management Like a Flow Problem

At the moment I am managing the bugs for a project. I am responsible for triaging the bugs, allocating them to the right resource and generally making sure they get attended to.

One interesting aspect of this process is trying to predict when the bugs will be completed. The issue reminds me of the flow problems I used to work on in my physics days.

A Simple Bug Model

In this project, all bugs are in one of three states:

  • Active: The bug is not fixed
  • Resolved: The bug has been fixed and is ready for testing
  • Closed: The bug has been tested and found to be fixed

The client creates active bugs, the consultant resolves bugs and the client closes bugs.

The Physics of Bugs

The problem reminds me of a flow problem with sinks and sources. In this case our source is the inflow of new bugs and our sink is the bucket of closed bugs. The resolved state is like a leaky bucket with bugs flowing in from the active state and flowing out through a hole to the closed state.


The Maths of Flow Systems

Flow systems have rules of conservation. For us the rules are:

  • New bugs can only enter into the Active bucket
  • Bugs cannot be destroyed
  • All bugs eventually end up in the Closed bucket

Source and Sink Rates

Here are some mocked up data to see how we can apply our model to the bugs.

Date Active Resolved Closed Total
2014/03/17 25 11 6 42
2014/03/18 23 15 7 45
2014/03/20 21 18 7 46
2014/04/02 24 20 14 58
2014/04/04 22 25 16 63
2014/04/07 20 27 16 63
2014/04/09 11 34 20 65
2014/04/10 10 38 21 69

The data, in itself, is hard to gain insight from but the rates are a little more telling.

For us, we will look at the average flows over time. Firstly, the source and the sink rates.

  • Average Bug Creation Rate = (69-42)/24 = 1.125 bugs/day (source rate)
  • Average Close Rate = (21-6)/24 = 0.625 bugs/day (sink rate)

Here I have taken the difference in days, but you can also use ‘working days’ if this suits better.

This immediately tells us that bugs are being created faster than they are being closed. Therefore, if things remain the same, the bugs will never be finished. Let us revisit this a bit later.

Resolution Rate

All Active bugs must go to either Resolved or Closed so, with this information we can calculate the rate at which bugs are leaving the Active bucket i.e. the rate of Resolution

Rate of Leaving the Active Bucket = (59-17)/24 = 1.75 bugs/day

So we now have the

  • Rate of Bug Creation (1.125 bugs/day)
  • Rate of Resolution (1.75 bugs/day)
  • Rate of Closure (0.625 bugs/day)

What the Rates Tell Us

In the bug-fixing stage of a project, there is always pressure to get bugs closed. Often project payments are contingent on critical bugs being closed. Go-live dates put pressure on client and consultant alike to get the bug-fixing job finished.

Firstly, as we noted before, the Rate of Bug Creation is greater than the Rate of Closure. Bugs are flowing into the system faster than they are ending up in the Closed bucket. This means, if things continue as they are, there will always be Active and Resolved bugs in the system and they will continue to grow.

However, the Rate of Resolution is larger than the Rate of Bug Creation so the consultants are actioning the Active bugs but they are staying in the Resolved bucket with only a trickle into the Closed bucket. The consultants are doing what they can but the client is dragging the chain on closure. This is excellent information for a project manager to know, who may be negotiating the situation with the client or having to report to their bosses on why the project is getting delayed.


The model employed here is quite a simple one. For example, if the client does not accept a Resolution, the bug will return to Active, but it provides a foundation for analysing bugs through rates of change and gaining insights which otherwise may not be apparent. Other extensions of this model may be rates of change of the flow. For example, it is reasonable to expect the rate of bug creation to taper to zero as testers run out of things to test, that is, the rate of bug creation will decelerate over time. This can be calculated and fed into the model for greater accuracy.

See how you go and, if like above, you find out that there is more to the picture than too many bugs and not enough action, your team will thank you for it. Good luck.

Tuesday, April 1, 2014

Case Study: Pet CRM – Valuable Community Service vs Big Brother


A recent project I worked on has received a bit of controversial press so I thought I would write about it from my perspective and the benefits it is seeking to provide.

As part of a joint venture between the soon-to-be-merged local councils of Mosman and North Sydney, a new, innovative program is being initiated for pet owners. Essentially, as well as micro-chipping, in compliance with the NSW Companion Animals Act, animal owners will also be required to add a ‘pet cam’ to the collar of their animals. All dogs and cats are already required to have a collar with contact information on, so the new requirement is not onerous.

The councils will provide the ‘eyenimal’ day/night vision cameras with the cost being covered by the usual council registration fees. The council recoups the reduced revenue through the flow-on benefits of the system (see below).


Behind The Scenes

The councils are working directly with Microsoft to deliver the infrastructure for the system.


The Pet Reconnaissance And Note Keeping System starts with the camera. For PC owners, a .Net app, downloadable from the council’s web site, will activate when the camera is plugged in via a USB port, charging the device and uploading the captured footage to Microsoft Azure storage automatically. For Apple and Android owners, there will be apps in the respective stores coming in the next six months or so.

It will be the pet owner’s responsibility to regularly charge the device, during which time it is expected the pet is confined to the house e.g. while the animal is sleeping. Strict fines will be imposed for animals caught ‘in the wild’ without their pet-cam attached.

From the Azure storage, the councils will access the videos via Dynamics CRM, also allowing additional data to be associated to the videos e.g. owner details, other pets in residence, connections with other pets. Using the marketing functionality of Dynamics CRM, councils will be able to target residents for things like neutering campaigns, tick awareness or advertisement for council-run pet-related activities, based on the information they gather.

The case management module of Dynamics CRM will be used for capture pet-related complaints and enquiries. For example, a resident may wish to complain about dog mess being left in the street by an owner. This complaint will be managed (pet-aged) through CRM and, with the footage, the perpetrator found and the owners fined. A similar system has been set up in the UK with immediate benefit.

Through a SharePoint Online portal (with the working title of SharePoint Pet-Owners Online Footage), pet owners will also be able to access their videos and see where their furry loved ones have gone. Social links will also be available, allowing owners to share footage on sites such as YouTube, Facebook and Twitter.

Council Benefits

Obviously, there is the ability to better monitor regulation compliance e.g. cleaning up dog mess, but there are a multitude of other benefits expect to flow from the project.

Improved Residence Resource Usage

Through the pet cams, the councils will be able to review residence resource usage. Mosman residents have one of the largest carbon footprints in the world and, it is believed through reviewing residence HVAC usage via the pet-cams, targeted marketing campaigns can be employed to improve residents’ ecological impact.

Neighbourhood Watch

About one quarter of Australian households have a cat which makes for a lot of eyes and ears on the streets of the lower north shore of Sydney. Like the extensive use of CCTV cameras in London, the day/night cameras will provide 24-7 footage of the mean streets of North Sydney and Mosman.

Native Animal Census and Preservation

Cats on night-time explorations often explore bushland wildlife officers struggle to access. As well as monitoring native kills and fining owners, the night cameras will provide invaluable information on the native populations in the council areas.

Many of Australia’s native animals are nocturnal meaning native census counts are often done via traps. The pet-cam provides an alternative which leaves the native animals undisturbed.

The ‘Mosman latte quoll’, a localised variant of the Eastern Quoll, named after its coffee-coloured fur, has not had a confirmed sighting in the area for a number of decades but anecdotal sightings still occur in the Sydney Harbour National Park’ and it is hoped the pet-cams will finally provide the evidence needed to confirm ‘lattes’ are thriving in the Mosman area.

Pet Owner Benefits

As well as the benefit of seeing where their loved ones go each day, it is envisioned the new scheme will provide other benefits to the community.

Animal Paternity

With many of the lower north shore’s animals being expensive pure breeds, unplanned offspring can be a significant source of revenue, if heritage can be established. The pet-cams provide a way to begin the process of establishing paternity. Combined with the planned facial-recognition social innovations to be rolled out later (see below), this could prove to be a significant win for female cat owners in the area.

Home Surveillance

For housebound pets, through the pet-cam, owners can see what has been happening at home, providing security and comfort.

Concerns Raised

A number of civil rights groups have written articles to local papers, such as the Mosman Daily and North Shore Times, complaining about the new technology, suggesting the benefits of the system are vastly outweighed by the privacy costs. Obviously the councils disagree and see little difference between this system and CCTV surveillance systems, often employed in public areas.

There have also been questions raised about whether this is a ‘revenue-raising’ activity for the councils but, again, while improved infringement management will be a likely result of the system, this will mainly offset the cost of the program and the councils do not believe there will be a significant revenue increase overall.

Innovations to Come

The initial pet-cam rollout is the beginning of a larger pet management project for the councils. Innovations are being rolled out, as part of the project, over the next few years.

Pet Social Networking and Facial Recognition

The pet-cams offer an insight into the social worlds of our pets like never before; we can see who our pets associate with while away from home. While animal facial recognition technology is still in its infancy, once this becomes more mainstream, the plan is to link it into the system to make identifying social interactions simpler. Animals will be identified, with contact information made available via the pet owner’s portal.

While human facial recognition is available in the system as part of the initial rollout, linking to photo identification databases held by the councils, this information, for privacy reasons, will not be made available via the pet owner’s portal.

Direct Wireless Transmission and Solar/Kinetic Recharging

The next generation of the units is already being planned and one possible inclusion is wireless data transmission. This will free up the on-board storage and allow real-time access to pet movements. USB docking will still be needed for charging, although solar recharging/kinetic recharging (recharging via the motion of the animal) is being investigated.

Pet Communication and GPS

Two other possible inclusions are a mobile SIM and GPS. This provides the ability for owners to track the location of their pet and to communicate with them. While conversation is, of course, not possible, if the owner feels the pet is in an undesirable location (or if they will soon be home from work and want to greet their furry companion), they can initiate a call to the animal and coax it home. Similarly, like GPS child tracking devices, an invisible boundary can be established for the device and, if the animal goes outside of this boundary (or to a forbidden location) an SMS can be automatically sent to the owner, notifying them of the violation. In this way, the GPS technology also allows effective enforcement of the council’s “leash free zones”.


While the project is unlikely to save lives on a daily basis, I enjoyed the project because it is great seeing local government employing technology for the benefit of its residents. I see the potential benefits of the scheme and trust the councils not to misuse the information they will gather.

For an FAQ on the project and further information, the councils have set up a temporary landing page here which covers the main goals of the project and their vision for it.

Have a great April Fools Day.

Sunday, March 23, 2014

Getting Power View into Dynamics CRM


There it is, no Photoshop, this is real. Thank you to Microsoft’s CRM maven and top bloke Mark Rettig for inspiring me to revisit this and for giving me the ‘cross-scripting’ trick. This is how I do it.

Create Your Power View Spreadsheet

If you have Excel 2013, Power View comes as part of the package. Go to Insert-Power View to generate a pretty and powerful representation of your data. In my case, I browsed online and found some data showing industry sales by country.


After a bit of playing with the Power View I got the Map view you see in my dashboard.

Load the Spreadsheet into your SharePoint Site

Initially I tried using OneDrive but I could not get it to show the Power View sheet so SharePoint it is. As my long-term readers will know, I have an Office 365 subscription. Being cheap, this is a P1 plan which costs me US$6 per month and takes care of my email. It also comes with SharePoint which, until today, I had not done a lot with. Going to the SharePoint Team Site document store, I loaded up my spreadsheet.


As you can see, we get control of the permissions if we need to restrict access to the spreadsheet. Ticking it and selecting ‘View in Browser’ shows the Power View in my browser and gives me a URL to use.

Create a New Dynamics CRM Solution

This is where Mark’s trick comes in. If you try and add the URL directly to a dashboard in CRM it does not work; nothing shows up. This is because, cross-scripting is forbidden for dashboard iframes created against the base solution. To get around this, we create a solution and create the dashboard there. Now we can add an iframe to the dashboard and turn off cross-scripting


We are then good to go. We can add whatever else we like to our dashboard and it all just works. Have fun.

Saturday, March 15, 2014

Marc’s Lemonade Stand


Last week I reviewed the Salesforce yearly results and, as usual, railed against their ‘growth at the expense of sustainability’ strategy.

This week I look at Salesforce from a slightly different perspective: where does the money go? To do this I am going to take the Salesforce yearly financials and represent them as a lemonade stand business. The idea being we can see exactly what Salesforce is spending their money on to deliver their excellent lemonade (or Kool Aid, you decide).

You Can Fake a Lot of Things But Not Cash Flow

If you open any annual report from a public company, you will see three financial reports:

  • Statement of Operations (talks at Revenues, Costs and Profits)
  • Balance Sheet (talks at the assets and liabilities of an organisation e.g. money in the bank and outstanding loans)
  • Cash Flow Statement (shows where the money has moved over the year)

Revenues can be defined in creative ways, as can costs. Assets can be overvalued and loans can be set up in interesting and special ways. Therefore, the first two financial reports, at least in the short term, can be massaged to be more favourable than they possibly should be. However, it is much harder to fake cash flow.

Marc’s Lemonade Stand

Here is the scenario: Marc is running a very popular lemonade stand held outside of his home in Hawaii. He buys the ingredients from the local corner store and gets his sister to make up the drink. She also sits with him on the lemonade stand, helping with sales.

Marc and his sister spend a lot of time taste testing to make sure they are providing a quality product and, to drive business to their stand, put posters up in the local area advertising their drink.

In terms of the money made from the stand, some goes into the bank to earn interest and Marc also buys old comics, as an investment, which he sells to make a profit.

His sister gets paid for helping out with the stand and, keen for a bigger slice of the action, is also constantly buying shares of the business and taking a profit share/commission on sales.

Most days, his dad will buy a lemonade when he comes home from work, but does not always have change on his and so he owes the stand a few bucks. Similarly, Marc does not always have quite the amount of money for his ingredients but the kind owner of the corner store lets him take the goods on credit.

His mom helps him with the finances and lends Marc money when times are tough.

Being an enterprising lad, Marc also offers a loyalty scheme where, if a customer pays for twelve lemonades up front, they get a discounted rate. This means Marc is often holding money for lemonades he has not made yet. He also has bought out other lemonade stands in the area, taking their equipment and ingredients, and gets the former owners to redirect clients to his lemonade stand.

Finally, around Christmas, his uncle Sam comes to visit. Sometimes uncle Sam takes a lemonade, sometimes he pays a little back but he always seems to take more than he gives and there are no clear rules about when uncle Sam will take money or give it. Marc’s mom and dad simply tell Marc it is impolite to question uncle Sam and to let him do what he wants; it is only once a year, after all.

The Lemonade Stand Finances

All finances are relative to the sales of one cup of lemonade ($1) (equivalent to the total annual revenue of Salesforce). In other words, a 2013 cup of lemonade is equivalent to $3b in Salesforce revenue while a 2014 cup is equivalent to $4b in Salesforce revenue.

Like a normal cashflow statement, a positive number is cash flowing into the business and a negative is money flowing out of the business.

  2013 2014
Revenue/Cost Items    
Sale of a Cup of Lemonade $1.00 $1.00
Cost of Ingredients From the Corner Store -$0.09 -$0.09
Taste Testing Costs -$0.14 -$0.15
Posters -$0.53 -$0.53
Paying Sister to Make Lemonade and Sit on the Stand -$0.14 -$0.15
Overcharging/Undercharging $0.00 $0.00
Uncle Sam Subsidising/Taking a Lemonade For Free -$0.05 $0.03
Operating Activities    
Selling Sister a Share of the Business $0.24 $0.19
Lending Dad Money for Lemonades -$0.06 -$0.10
Change in Profit Share Not Yet Paid to Sister -$0.08 -$0.07
Money Put in the Bank $0.00 $0.03
Bank Account Interest $0.01 $0.00
Bank Account Fees -$0.01 -$0.02
Change in Money Owed to Corner Store $0.06 -$0.01
Loyalty Program $0.16 $0.15
Investing Activities    
Buying Out and Taking Over Other Lemonade Stands -$0.19 -$0.65
Fixing up the Lemonade Stand -$0.07 -$0.08
Comic Purchases -$0.33 -$0.14
Comic Sales $0.28 $0.26
Financing Activities    
Borrowing Money From Mom $0.00 $0.33
Net Change in Cash (+/- 1c for rounding) $0.05 $0.01

The headings above are approximate as I have combined some line items in the Salesforce financials.

The Big Ticket Items

So, for every cup of lemonade sold for $1, in 2014, the business gained 1c. In the previous year, it was 5c. This does not strike me as a lot of cash. The big transactions in each area are:

Revenue/Cost Items

  • Sale of a Cup of Lemonade ($1) (Revenue)
  • Taste Testing Costs (-15c) (Research and Development)
  • Posters (-53c) (Marketing and Sales)
  • Paying Sister to Make Lemonade and Sit on the Stand (-15c) (Administrative)

For revenue/costs, obviously the big cost here are the posters. Marc is spending a lot of money getting the word out there to drive the business. Also, there is not a lot left over when costs are accounted for. In fact Marc only has 9c left.

Operating Activities

  • Selling Sister a Share of the Business (19c) (Proceeds and Expenses Related to Employee Stock Plans)
  • Lending Dad Money for Lemonade (-10c) (Accounts Receivable)
  • Loyalty Program (15c) (Deferred Revenue)

The largest operating activity is getting money into the business by selling shares to his sister. To do this, Marc takes his sister’s money then prints a certificate on the family computer saying she owns another share of the business. Of course, all Marc has to do is print off another share for himself and his sister’s total ownership of the business remains the same. His sister still has not caught onto this.

The loyalty program is interesting in that people are paying for lemonades today which they will receive tomorrow. This is helping put money in Marc’s pocket but he will need to hand over lemonades without payment later on.

After his sister and the loyalty program have propped up the business through operating activities, Marc has 29c in his pocket.

Investing Activities

  • Buying Out and Taking Over Other Lemonade Stands (-65c) (Business Combinations + Strategic Investments)
  • Comic Purchases (-14c) (Purchase of Marketable Securities)
  • Comic Sales (26c) (Sales and Maturities of Marketable Securities)

Marc was aggressive in buying other stands this year which cost the business dearly. To partly cover this, Marc sold off some of his comics.

After his investing activities, Marc is left short 32c.

Financing Activities

  • Borrowing Money From Mom (33c) (Proceeds from Borrowing on Convertible Senior Notes + Insurance of Warrants + Purchase of Convertible Note Hedge + Payments on Convertible Senior Notes + Proceeds From Term Loan + Principal Payments on Term Loan)

Fortunately, Mom is there to bail him out and offers to lend him 33c to cover the shortfall, leaving 1c in his pocket.

Big Changes Since the Year Before

Compared to the previous year, the items which have changed the most are:

  • Selling Sister a Share of the Business: Down by 19%
  • Lending Dad Money for Lemonade: Increased 74%
  • Buying Out and Taking Over Other Lemonade Stands: Increased 237%
  • Comic Purchases: Decreased 59%
  • Borrowing Money From Mom: Not Done in the Previous Year

Relative to the size of the business, his sister is not buying shares as much as the previous year. Could she onto Marc’s scheme? Is this an on-going trend with her purchases contributing less and less to the relative bucket?

Lending Dad money to buy lemonades has increased significantly since the previous year. It is easy to get people to buy lemonade when they do not have to hand over the money but collecting money from dad down the track may be tricky.

Buying other lemonade stands has increased massively relative to the previous year but, opportunities do not regularly present themselves, so this may be opportunistic. Similarly, the comic/mom funding may also be a once-off to cover the mergers and acquisitions.

Could Marc Run the Lemonade Stand Without Sister Buying Shares and the Loyalty Program?

We know that after costs are accounted for, the $1 from the cup of lemonade is reduced to 9c. Marc could stop most of the other Operating Activities without it adversely affecting the business. Dad may not be able to purchase lemonade each night but it is hard to recoup that money anyway so this may be ok.

Similarly, the loyalty program is good for getting cash through the door but it is robbing the future to improve present cash flow and it can be eliminated.

Marc can stop acquiring other lemonade stands but will always need to fix up his lemonade stand. Therefore, the 8c cost of maintaining the stand remains with all other Investing and Financing Activities going, leaving him 1c.

So, while it would be tight, Marc could sell lemonade but he would only make a margin of 1% on the sales.

In the previous year, Marc only had 4c after costs and after the costs of maintaining the lemonade stand are considered, we lose 3c on each $1 cup of lemonade.

Financial Calculations Used

For both of you interested, here is the conversion I used. Everyone else can skip to the conclusion.

  • Cup of Lemonade (Subscriptions + Professional Services)
  • Cost of Ingredients From Corner Store (Subscription costs + Professional Services costs + All Depreciation/Amortization)
  • Taste Testing (Research and Development)
  • Posters (Marketing and Sales)
  • Paying Sister to Make Lemonade and Sit on Stand (Administrative)
  • Bank Account Interest (Investment income)
  • Bank Account Fees (Interest expense)
  • Overcharging/Undercharging (Other+Effect of Exchange Rate Changes)
  • Uncle Sam Subsidising/Taking a Lemonade For Free (Tax benefit + Excess tax benefits from employee stock plans + Excess Tax Benefits from Employee Stock Plan)
  • Selling Sister a Share of the Business (Proceeds and Expenses related to employee stock plans)
  • Lending Dad Money for Lemonades (Accounts Receivable)
  • Change in Profit Share Not Yet Paid to Sister (Deferred commissions)
  • Money Put in the Bank (Prepaid expenses, current assets)
  • Change in Money Owed to Corner Store (Accounts Payable)
  • Loyalty Program (Deferred Revenue)
  • Buying Out and Taking Over Other Lemonade Stands (Business Combinations + Strategic Investments)
  • Fixing up the Lemonade Stand (Land activity and building improvements + Capital Expenditures + Principal Payments on Capital Lease Obligations)
  • Comic Purchases (Purchase of marketable securities)
  • Comic Sales (Sales and Maturities of marketable securities)
  • Borrowing Money From Mom (Proceeds from Borrowing on Convertible Senior Notes + Insurance of Warrants+Purchase of Convertible Note Hedge + Payments on Convertible Senior Notes + Proceeds From Term Loan + Principal Payments on Term Loan)


Marc is running lean. For every dollar of lemonade he sells, he only ends up with a few pennies in his pocket and this does not account for a purchase of a new lemonade stand sometime in the future when the current one wears out (depreciation/amortisation). Also, with his sister buying shares and the loyalty program, this is bringing money into the business but is not sustainable in the long term.

I maintain my concerns for Salesforce but the good news is it reversible if things like the loyalty program and ‘sister share purchases’ are wound down. As usual I wish Marc all the best with his stand and hope it with us for many years to come.

Wednesday, March 5, 2014

Salesforce: If You Always Do What You Always Did, You Will Always Get What You Always Got

Hot off the Salesforce press are the financial numbers for the full year. Did they make a quarter of a billion dollar loss like they predicted six months ago? Which prominent C-Level executive is  moving on? Will Marc say the p-word (profit) and burst into flames? All will be revealed.

The Numbers

These numbers are not taken from the Salesforce detailed financials on their web site because those numbers are now one year out of date. Neither are they from the annual report as this is not yet complete. These (unaudited) numbers are from the press release associated to the full year announcement and, as usual, are the GAAP numbers.

  2013 Q4 2014 Q1 2014 Q2 2014 Q3 2014 Q4 2014 TOTAL
Revenue 834,681 892,633 957,094 1,076,034 1,145,242 4,071,003
Subscription Revenue 785,495 842,221 902,844 1,004,476 1,075,001 3,824,542
Revenue Cost 183,362 208,994 217,717 268,187 273,530 968,428
Operating Cost 672,126 728,179 779,234 905,778 975,458 3,388,649
Salesforce Income -20,844 -67,721 76,603 -124,434 -103,746 -219,298
Revenue Growth # yoy 202,768 197,166 225,445 287,636 310,561
Revenue Growth % yoy 32% 28% 31% 36% 37%  
Total Cost % yoy 34% 31% 34% 39% 46%  
Staff 9,801 10,283 12,571 12,770 13,312  
Staff Growth (yoy) 26% 23% 43% 37% 36%  
Margin -2.50% -7.59% 8.00% -11.56% -9.06%  

NB: 2014 Q4 is November 2013 to January 2014, the quarter just passed, not a forecast for the future.

Salesforce can be congratulated for NOT meeting their prediction of a quarter of a billion dollar loss. They only lost $219m in the end, coming in $31m under their prediction.

Looking To The Future

Their prediction for the next quarter is for an GAAP EPS of between –$0.22 and –$0.23, which, for 613 million shares, generates a total loss of about $138m (the largest quarterly loss they have ever recorded if they achieve it). They expect revenue to be around $1.210 billion giving us a margin of –11%.

Their prediction for the next year is a GAAP EPS of about –$0.52 on 624 million shares which is a total loss of $324m. This makes this year’s loss of $219m seem like a drop in the ocean. They expect a full year revenue of around $5.3b, which means their expected margin is –6%; an improvement but still the wrong side of zero.

Revenues and Costs

Probably the biggest point of note in the financials is, in regards to the revenue growth and cost growth. Revenue Growth, year on year was 37%, almost a historical high. Unfortunately, the annual cost growth is accelerating and reaching levels which are also approaching record highs. Here is the historic graph.


Please note: In putting this together I realised I had previously miscalculated the revenue growth. I have adjusted the past three quarterly report blogs to reflect this, although it did not have a huge impact on the articles.

We can see in the graph that, traditionally, the two lines trend in a similar direction (with cost growth occasionally trying to break free) and cost growth outpacing revenue growth for most of the last four years.

What does this mean? It means that it is impossible for the company to achieve profitability until either costs are controlled or revenues accelerated to even higher levels than the crazy-high levels they are already. To approach profitability, the red line MUST go below the blue line. The margin at this stage is –9% meaning for every $10 worth of services they produce, they receive $9 in compensation. As mentioned, next quarter they are looking at a margin of –11%.

Does the CFO, Graham Smith, care? Probably not given he is leaving Salesforce next year in March. I expect he will keep revenues growing, hanging the expense. What about Marc Benioff, CEO? Marc says he is committed to improving non-GAAP profitability by 1.5% but, given you can do anything with non-GAAP numbers, it is like saying you are committed to improving the health of garden fairies. The company’s prediction for the next quarter shows a further deterioration in GAAP margins so while non-GAAP numbers may turn out ok, they expect the GAAP numbers, the real ones, to be worse.

Salesforce’s Current Assets

If things get tough for Salesforce, they will look to their assets to prop up the company until things improve. Therefore, I thought I would look at their assets this quarter to see what they have in reserve for a rainy day. Financial reports talk of ‘Current Assets’ (the stuff that is easy to sell such as cash in the bank) and ‘Non-Current Assets’ (the stuff you cannot easily sell such as office buildings). So, let us look at Salesforce’s current assets.

Cash and cash equivalents: $782m (29%)
Short-term marketable securities (shares): $57m (2%)
Accounts receivable (money owed to Salesforce): $1.36b (51%)
Deferred commissions: $171m (6%)
Prepaid expenses and other current assets: $309m (12%)

The percentages are how much each class represents of the total. Clearly, the big amounts are cash and money owed to Salesforce. Cash is an excellent current asset to have; it is readily available and perfect to weather a storm. Accounts receivable is not as friendly as a current asset because you have to chase the debt and, if the person owing you the money has an idea you are in financial trouble, they are more likely to act slowly and see if the problem goes away i.e. Chapter 11/bankruptcy.

A few years ago now, this famously happened to a company in Australia called OneTel, a telecommunications company. Like Salesforce, they had amazing growth in terms of revenue and market share and, unlike Salesforce, they were very profitable. Where they ran into problems was in paying their bills. Because so much money was tied up in their client’s bills (accounts receivable) and it was hard to chase up, they eventually ran out of available money to pay their debts and they went bankrupt. Even successful companies can go bankrupt if they do not maintain healthy current assets.

So how have these two asset classes (cash and accounts receivable) changed over time?


NB: These are the unaudited numbers until the annual report comes out but they should be right.

Other than a big stockpile in the first quarter last year, cash has stayed around $600-700m. The accounts receivable has shot up though. In fact, since last quarter, it has more than doubled. I will need to verify the numbers when the annual report comes out but, if true, this means twice as much debt to collect if they need the money. I will be watching this as part of future quarterly blog reports.

Earnings Call Buzzword Bingo

As usual, we take the quarterly earnings call transcript to see what is weighing on the minds of our two big ‘C’s (as in C-Level executives), Marc Benioff and Graham Smith.

Honourable two-word phrase mentions go to “cash flow” (mentioned 11 times) and “deferred revenue” (mentioned 10 times).

  2013 Q4 2014 Q1 2014 Q2 2014 Q3 2014 Q4
Number of words 3800 2800 3500 3700 3700
Customers/Customer 40 32 40 39 25
Revenue 45 32 37 37 29
Cloud 22 16 23 31 14
ExactTarget 0 0 24 21 15
Platform 10 12 19 21 12
Service 16 12 14 19 13
Sales 8 9 14 16 4
Growth 17 13 12 14 12
Marketing 9 0 12 12 11
Cash 13 10 10 10 16
Mobile 0 16 11 7 5
Operating 0 9 9 7 10
Enterprise 15 0 6 7 3
Social 9 10 9 6 3
EPS 0 7 10 5 6
Salesforce1 0 0 0 0 11

My rule for the words in this list is if they have 10 or more mentions in the most recent five periods. No words dropped off the list from last time and Salesforce1 got added.

Customer(s) and Revenue have consistently topped the mentions. Earnings and profitability got mentioned once each and, therefore did not make the cut.

Mobile is consistently dropping in mentions, as is social and the new ‘mobile app platform’, Salesforce1 is the hot topic this quarter.

Google Trends

“Dynamics CRM” continues to outpace “” in terms of Google searches.


Regionally, Dynamics CRM is truly the international CRM between the two products.


While, when comparing the ranking levels down to 70, is much more localised in the USA, with Ireland and Singapore being common to both.


Insider and Institutional Sales

Again, according to Yahoo, insiders have sold 0.5% of their shares and the institutions have sold 2.72% of their shares.

Here is the historical trend of the last three quarters.

  2014 Q2 2014 Q3 2014 Q4
Insider Sales 0.50% 0.50% 0.50%
Institutional Sales 3% 2.75% 2.72%

There is a lot of consistency here with both the executive insiders and institutional owners continually selling down although the institutional sales are slowing. These are the same institutions which often have a ‘BUY’ rating for the stock and, yet, they are offloading theirs, presumably to the people they are giving the ‘BUY’ recommendation to.

Graham Smith, CFO is still regularly selling and is now down to 90,341 shares, which is too small to measure meaningfully as a percentage of the total shares. Maybe his plan is to totally sell out before he retires. At this stage, although close, he is not yet a total sell-out. Assuming Marc Benioff, CEO has not sold any shares, he is the largest individual owner of the company with a 6-7% share of the company.


Salesforce continues, like the titanic, on a steady course. Institutions and insiders are preparing lifeboats, albeit slowly, by offloading ownership.

As the title says, Salesforce are being consistent in their disregard for profits and reaping the reward of receiving none. They are also talking about the same things they have always talked about (customers and revenue). However, complacency is not an option with Dynamics CRM being at the forefront of people’s minds, as much as Salesforce.

My advice to Salesforce would be, if this is part of a bigger strategy, get accounts receivable under control because, in tough times, no one runs away faster than the people who owe you money. Build up the cash reserves and set yourself up for a rainy day. Then, work out what it will take to bring the company back into GAAP profit and do it.

I truly believe that, if Salesforce can get their finances under control, they will be unassailable. It will be interesting to see whether Marc will be brave enough to put a new CFO in place to tackle these big issues or whether he will keep always doing what he has always done and keep always getting what he always got.

Monday, February 24, 2014

Arduino: The Universal Circuit

A bit of a departure from my usual topics but one which may well be of interest to like-minded folk. For a while I had heard about some kind of electronic doodad called an Arduino circuit. I never really understood what they did or how they could be relevant to me. Thanks to a Christmas purchase I now see the light and I am dusting off my coding fingers.

Old School Electronics Kits

As a kid, I had an old electronics kit. The connectors were springs which you bent to the side and shoved your wire between the rings. It came with a book of electronics projects. I even found a picture of it online.

My memory of this kit is spending hours running the connections in the book only to have it do very little when I threw the switch. Occasionally, a project would work but, even when it did, the wiring was so complex it was difficult to understand what was going on.

In Australia, we also had the “Dick Smith Electronics” kits. These were packets of electronic components you put together to create something e.g. the Knight Rider flashing LED kit or an FM transmitter. These were fun and educational but are no longer with us. Dick Smith Electronics went into retail and their kits are now a fond memory of Generation X electrical engineers.

Principle of Equivalence of Hardware and Software

To understand the evolution to Arduino, let us revisit some computing theory, specifically the Principle of Equivalence of Hardware and Software which basically states “anything you can do in hardware, you can do in software and vice versa”. As an example, we will consider a classic of the electronic set, the light bulb whose brightness varies based on the ambient light, as measured by a photo-resisistor (something whose resistance changes with the light it receives).

In our circuit we will have the photo-resistor, a light bulb and some clever arrangement of relays and/or transisitors and maybe some diodes to take the input of the photo-resisitor and transform this into a moderated current for the light bulb (we could probably make the circuit with a simple voltage divider in this case, but let us pretend).

The idea behind the Principleof Equivalence is we could also get our input (photo-resisitor) and output (light bulb) and link then via a processor running some software and generate the same result.

The Makey Makey

Now let us come to my Christmas present, which made everything clear; a Makey Makey. This is a cute device that plugs into your computer and lets you turn anything slightly conductive into a arrow key, mouse click or space bar.

I played with it for a bit, got the kids excited and on reading the web site, it informed me that when I wanted to take things further, the Makey Makey could be turned into an Arduino. From there it all fell into place.

In this case, the Makey Makey takes the input of closing a circuit by touching, say, a piece of fruit and converts this into the output of a keyboard key-press, via what is called a micro-controller (a small computer running code).

The Arduino

The Arduino is what the Makey Makey is based on. It has input and output ports, the micro-controller and a USB port so you can hook it up to your computer to power it and also to download your code into the micro-controller.

Luckily for me, the Arduino is programmed using C/C++ which is what I used to write back in my university days when coding physics simulation programs on Linux boxes. Here is the classic “hello world” sketch (what programs are called for Arduinos) for the Arduino which makes the on-board LED blink.


#define LED_PIN 13

void setup () {
pinMode (LED_PIN, OUTPUT); // Enable pin 13 for digital output

void loop () {
digitalWrite (LED_PIN, HIGH); // Turn on the LED
delay (1000); // Wait one second (1000 milliseconds)
digitalWrite (LED_PIN, LOW); // Turn off the LED
delay (1000); // Wait one second


This very readable code. In this case we only use one ‘pin’, number 13, as an output with no input. You write these programs in a free program you download onto your computer which also handles the uploading into the micro-controller via a button press.

My Project List and Tutorials

I already have my list of projects lined up:

  • A USB control panel for a Mame arcade emulator, using my Surface for the screen
  • Laser harp
  • Theremin using proximity sensors
  • Convertor for a traditional typewriter to make it usable as a full keyboard

but before I do these I am going through a series of tutorials on Arduinos on YouTube by Jeremy Blum. These are proving very useful for learning the practicalities of circuit design e.g. switch-bouncing and pull-up/down resisitors compared to my very theoretical knowledge of electrical circuits. It is also giving me a good idea of the parts I need for my kit.

How to Buy an Arduino and its Parts

I have bought my Arduino and the various parts to go with it (LEDs, a breadboard etc.) almost exclusively on eBay. A breadboard means there is no soldering which is also a big improvement on my old electronics days as a kid. The Arduino board can be bought for $10-20 and the other bits and pieces cost pennies. This is one hobby which can be explored without breaking the bank.

There are also pre-made add-ons for the Arduino called ‘Shields’ which plug onto the top of the Arduino board providing additional functionality e.g. GPS shields, ethernet shields etc.


Obviously not a CRM post but all work and no play makes for a grumpy IT worker so, if you are looking for a hobby which plays to your technical strengths and you always wanted to automate your home like Bill Gates then here is the chance. An Arduino and parts will cost about the price of a bargain box computer game and provide unlimited creative opportunity.

Have fun!

Saturday, February 15, 2014

Developer Essentials for the Functional Consultant

I am the first to admit I am not much of a coder. The only time I really put code to screen is for my new hobby of Arduino sketching (another blog coming soon). However, to be an effective functional consultant I still need to know the basics to make sure I am not expecting too much of the coders; there is no point documenting a design where one small element will take six months of development when an alternative approach will take half a day.

It is true that a good developer will push back on a bad design and suggest a better approach but, if a functional consultant knows the basics, they can steer the client down the right path to begin with and avoid disappointment later.

In this blog I will cover the two most common tools in the development kit-bag; jscripts and plugins. Please note this is not a comprehensive guide to developing in Dynamics CRM. For detailed information, consult the excellent SDK. If there are any developers reading this and I trip over a term or make a hash of something, please do add it to the comments. I would prefer to look foolish and learn something than lead the readers astray ;)


jscripts operate within the browser and, in my experience, commonly serve two purposes:

  • Make stuff happen on an entity form e.g. pop up a warning on the create form of a record
  • Do something when a custom ribbon button is pressed (2011 terminology, in 2013 we have no ribbon but the actions remain)

In terms of the form, there are four events you can fire the jscript off:

  • OnSave (saving of the form)
  • OnLoad (when the form opens on the screen)
  • OnChange (when the value in a field changes)
  • TabStateChange (opening and closing of Tabs)

For buttons, we can fire the script when someone presses our custom ribbon button. This can be useful as an interim step for doing something else e.g. firing a workflow/dialog or plugin (plugins are a little trickier because the server is oblivious to the jscript doing things, and plugins work on the server, but I will talk about how we get around that later).

The jscript does not care if the server knows about the change or not. So, for example, an OnChange script can do things on the form well before the form that is open has been saved. Also, jscripts fire immediately; there is no concept of pre or post-action; they just happen after the event occurs. Therefore, it makes sense not to overload a jscript with doing too much because it means the browser will get bogged down. For those of you who go to web sites where a warning pops up telling you a jscript is taking a long time to run, you will know how this feels.

CRM 2013 has done an excellent job of eliminating the need for a lot of common jscripts through the Business Rules function which allow an administrator to define field and form behaviours through configuration. Business Rules trigger off of field changes, or when the form opens, and allow for things like:

  • Popping up a message box
  • Changing the value of a field
  • Making a field compulsory
  • Setting the visibility of a field
  • Locking or unlocking a field

Therefore, if you are upgrading from CRM 2011 to 2013 or designing a CRM 2013 system, consider Business Rules to reduce development time.


Plugins run on the server and provide a lot of flexibility and power. As they are server-side, they have no concept of CRM forms but simply respond to stuff that happens on the server. This can be through the saving of information on a form, through the web service layer or through the importing of data through the import wizard (strictly speaking, everything goes through the web service layer, but you get the idea).

Plugins do not trigger off of events, because events are something that happen on forms; plugins trigger off of messages happening in the back end of CRM. While jscripts get a few events to fire off, plugins get many, many messages to fire off. Jamie Miley, my roomie for the most recent MVP Summit and passionate freedom fighter did a great blog on the messages for CRM 2011 here and here (they are also available via the SDK). For CRM 2013, you can see all the messages in the SDK here. An example of a message is the ‘Create’ message for the Account entity. This means we can fire a plugin when the server knows about the creation of a new account.

Plugins can fire before or after the message i.e. a pre-plugin can prevent the creation of an account from occurring, and they can run synchronously or asynchronously meaning they do not have to hold up the user but can run in the background communicating and waiting for third party web services, for example.

Just as Business Rules have reduced the amount of jscript being written in CRM 2013, improvements to workflows mean these have also made in-roads in reducing plugins. Before CRM 2013, workflows ran asynchronously (in the background). While I am a big fan of workflows, only being able to run in the background made them a little awkward in some cases and downright impractical in others. With synchronous workflows in CRM 2013, they are a lot more powerful. A good example of this is the auto-numbering solution from last week. With asynchronous workflows there was always the potential for two workflows to fire close together and assign the same auto-number to two different records. As CRM MVP and fearless truth reporter, Jukka Niiranen recently showed, we can, with a strong level of confidence, rely on synchronous workflows to generate unique auto-numbers for records. Previously, robust behaviour like this was only possible with plugins.

Mixing Code and Helper Entities

This is a nice trick my comrade in arms, Olena Grischenko has shown me. It is one way to trigger a plugin from a ribbon button. The ribbon button can run a jscript and so we need a way for this to generate a message on the server. The trick is to create a new entity (a ‘helper’ entity) and have the jscript act on this entity in some way which the server knows about e.g. create a new record for this entity. This generates a message e.g. a create message and our plugin fires.


As a functional consultant, most of my work is concerned with the front end and adapting it to meet the needs of my client. However, sometimes I must resort to code to smooth out the rough edges or to meet a specific client requirement. In knowing the essentials of how code works with CRM, I can ensure I design the CRM system to be practical but also affordable. This makes for happier clients, happier developers but, most importantly, a better CRM system.