Monday, April 29, 2013

Historical Operating Cashflow of Salesforce

Last month I looked at Salesforce’s end of year financials and talked about how their main source of revenue was staff handing over money for Salesforce shares. I wondered if this has always been the case and therefore thought it is worth looking at how the operating cashflow of Salesforce has changed over time.

Sources of Operating Income

The two sources I will focus on are the ‘Net income(loss)’ and the ‘Expenses related to stock-based awards’. The net income is the money made from selling services so it makes sense to look at this. The stock-based awards entry is worthwhile because it was the biggest contributor to operating income for the last financial year and for the last quarter of the last financial year. Another line item of reasonable size is the ‘Changes in assets and liabilities, net of business combinations’ but this has little consistency over the past four years and therefore tells us very little. The other significant line items refer to the loss of the value of intangible assets e.g. brand value referred to as ‘amortization’. These are not real cash transactions and, therefore, are also being left out.

Historical Trends

Here are the past four years of quarterly transactions for the two sources of operating cashflow.


The first thing that strikes me is the lack of seasonality in the quarterly figures; the trends are clear. While initially contributing roughly equally to operating cashflow, the two sources are heading on divergent paths. Income is heading south and seems to have been doing so since around 2011 Q1 (the start of 2010). Stock expenses are growing steadily and have been since net income turned into a loss, back at the start of 2011.

The Problem

Salesforce is bringing in money by telling a great story to its employees and they are literally buying it. However, sustainable companies do not consistently generate losses and borrow money from their employees to survive. Things must change. The question I have is if this is a story which has been going on for three years, what is management waiting for? Where is the evidence that they are doing anything to deliver on their promises of prosperity? Will Salesforce be the betamax of the CRM world? A product whose advocates cry was superior in every way if only it had not been outmanoeuvred by the ‘big boys’.

Given I am about to start working with a company who deals with both Dynamics CRM and Salesforce, I sincerely hope things do change. I want to work with great products and Forrester and Gartner both attest Salesforce is a great product but I am not so sure the company’s financials would make the grades in a magic quadrant comparison. As usual I will continue to monitor the financials of Saleforce in the hope things will change and, hopefully, not for the worse.

Saturday, April 13, 2013

Three Limitations of Using Advanced Find

I got asked a couple of days ago if I knew of a blog which listed the limitations of using an Advanced Find query. I knew of a couple of the limitations off of the top of my head but could not find a blog summarising them. So here it is.

Outer Joins

In my opinion, other than being able to do aggregate calculations, this is the biggest limitation of Advanced Finds. So what is an ‘Outer Join’?

Let us say we have two tables in a database, the Account and Contact table. Advanced Find allows to ask questions like ‘Show me all Accounts which have a Contact whose first name is John’ or ‘Show me all Contacts where their Account is in the Mining industry’. In these cases a record exists in both tables e.g. an Account record linked to a Contact record whose name is John. This is called an ‘Inner Join query’.

However, if we ask ‘Show me all Account with no Contacts’ we cannot do it. In other words, if we ask questions where there is a record in one table and none in the other table we will find it impossible with Advanced Find. This is an ‘Outer Join query’. Other examples are reports showing neglected leads (leads with no activity for six months) which cannot be done with Advanced Find.

In the case of Accounts, Contacts and Leads, we can get around the problem using a Marketing List. In the above example, we can add all Accounts to the Marketing List and then remove those with a Contact, leaving behind the desired list. For other types of records, the only option is to have a flag field to help us. For example, we can have a ‘Contact Flag’ field on the Account which is populated when there is an active Contact associated to the Account. We can then use this flag to return ‘All Accounts with an unticked Contact Flag’, satisfying our Outer Join query.


Titles are NOT restricted to just the search entity. For example, if we are searching for all Contacts in a certain industry, we can bring in fields from the Account entity, by dropping down the entity selection when adding columns.


However, we can only go one level up. So, for example, if we want to ask ‘Show me all Appointments regarding Opportunities where the Account is in the mining industry’, we can display Appointment fields as columns and Opportunity fields as columns but we cannot browse up to the Opportunity’s associated Account and show their fields. In this case, the only workaround available is to replicate the key fields from the Account onto the Opportunity and then reference these copied-fields.

Grouping Conditions Across Entities

Let us say we want to know ‘All Accounts where the Account is in Sydney OR the Account has a Contact in Sydney’


We can write the above query but this asks for Accounts which are in Sydney AND has a Contact in Sydney. Normally we would use the ‘Group OR’ button at the top but this can only apply to conditions within the same entity and therefore we cannot group them. In this case the best we can do is run the query twice (once for the Account rule and once for the Contact rule), export to Excel and combine manually.


Advanced Find is one of the most powerful and accessible features of Dynamics CRM and any site not making full use of this function is missing out. Even those sites using it every day may not discover the limitations listed above. However, now you are aware of them, if you do find yourself coming up against one of them, you have some workarounds or the opportunity to rethink to see if you can gain insight through an alternative, supported, query.

Thursday, April 11, 2013

Voting Has Started in the Top 100 Most Influential People in Dynamics!

It's that time of year again when I try to convince (mostly) complete strangers into voting for me in the Top 100 Most Influential People in Dynamics.

Today, you are that lucky (mostly) complete stranger. If you have felt swayed by my blog ramblings, feel free to vote by clicking the link.

Monday, April 8, 2013

Using Quick Campaigns for Managing Events

Here is a simple way to manage an event using Quick Campaigns in Dynamics CRM. I have implemented this, or similar, at a couple of clients where the process for the event was:

  • Create an invitation list
  • Call them up to see if they are coming
  • Review for things like identification labels

Quick Campaigns

Probably not the most utilized feature of Dynamics CRM but a useful one none the less. Quick Campaigns allow you to take a list of Leads, Contacts or Accounts and assign an Activity to them, such as a Phone Call. We can also track the responses to these Phone Calls.

Create An Invitation List

Firstly, we need to create a list of people we are inviting to the event. We can use an Advanced Find query, pick them by hand from an existing view or use a Marketing List. In this case I will just hand-pick some Contacts. Once this is done I click the ‘Add’ tab and select Quick Campaign – For Selected Records (or For All Records On All Pages in the case of an Advanced Find). This is our invitation list and can be exported to Excel, if required.


We then set up a Phone Call for the Contacts, assigning them as we will.


Call Them Up

Going to the Marketing section and the Quick Campaigns in the navigation, we now see our event and click on the Phone Calls that have been created.


We open these up and make the calls. Once we do this, we unleash the secret potential of the Campaign Response. To be honest I never used to be a fan of Campaign Reponses; I did not find them very useful. Until I discovered this trick.

From the Phone Call, we click on ‘Promote to Response’ to create a Campaign Response.


We now have a Campaign Response record which links the Contact, the Phone Call and the Event.


Review the Responses

From the Quick Campaign we can review all responses and, again, export to Excel if required.



Quick Campaigns and Campaign Responses are not a widely used feature of Dynamics CRM but work nicely for simple event management. If a more complex event is being managed and pre-event tasks need to be monitored, there is the Campaign entity, which also works with Campaign Responses. If we are not planning to make Phone Calls, we can use another activity instead and, finally, for really complex processes we can apply workflows and dialogs. Enjoy.

Monday, April 1, 2013

Silverlight to be Rewritten into HTML5

I did not get to go to Convergence this year but it is possible to access the excellent presentations if you registered. As it happens I did not register but an MVP friend of mine slipped me a login and password so I thought I would browse the content. There are some great talks on Orion which I highly recommend.

The Interesting Video

However, being the cheeky browser that I am I thought I would sneak behind the scenes a bit. All the videos were assigned a number in the URL i.e. so it was not hard to increment the number to see what else was around. One that I came across was which did not appear to be a polished presentation but a three-way conversation between, what I assume were Microsoft executives. This being said, the gentleman in the middle appeared to have a Finnish accent so perhaps he is from Nokia. Another curiosity is the logo in the top left suggests they are using a Google Hangout, rather than, say, Lync. Therefore, I assume, this is not an official presentation.


Once I started listening to the recording and realised it was significant, I took the screenshot with a hope of identifying the characters later. Unfortunately the presentation now appears to have been taken down and I did not grab a recording.

Anyhow, I am not sure if the recording was supposed to be on the Convergence site but the recording was of them discussing the future of Silverlight. As you may know there is hot debate regarding the relevance of technologies such as Flash and Silverlight in the light of the rise of html5, the new web standard. Consensus on the web seems to be that, while html5 is powerful, it does not have a fully fleshed-out development platform like Silverlight, is not a final standard and is supported by internet browsers to about the same extent as Silverlight is. In short, technologies like Silverlight are not going anywhere any time soon.

Microsoft’s Strategy

On the video, the gents talked about Microsoft’s role in the World Wide Web Consortium, some of the initiatives of the Windows Blue project and the plans for a SVG compatible Silverlight plugin to be the part of all browsers. To be more accurate, for a browser to be considered html5 compatible, it will need to support Silverlight. As the html5 standard is not final yet it seems the plan is to incorporate the Silverlight elements of .Net into the html5 standard if not for 5.0, then for 5.1 in 2016.

I can see the sense in this. For smaller animations and applications, developers can use html5. For larger, more enterprise endeavours where security is a concern and deeper client access is required, developers can use Silverlight and the .Net framework confident it will work in all contemporary browsers. Silverlight will move from being a Microsoft standard to becoming the standard for enterprise web-app development much as it is today for Windows Phones.

In the same way Microsoft and Novell worked on Moonlight for the Linux platform, it seems Microsoft plans to work with the other members of the Consortium to provide Silverlight compatibility in all popular browsers. Given Microsoft has already worked with Apple on bringing Silverlight to the iPhone, it will be hard for the other members to argue with these juggernauts of the client-server and digital worlds. Based on the rhetoric in the discussion it will be a case of getting on board or not getting endorsed as supporting the html5 standard.

It was also briefly mentioned that a project similar to Moonlight, called ‘Silverlite’ would also be hosted on codeplex for browsers not being directly assisted.


If Microsoft can insert Silverlight as a standard component of all web browsers this will probably be the end of Flash but will still complement html5, which can be used for smaller, lightweight projects. Thank you to Chris Cognetta, Jukka Niiranen and Jason Gumpert for their assistance with the article and for more information on the Silverlite codeplex project and Microsoft’s html5/Silverlight strategy, click here.

And, by the way, this is an April Fools Post ;)