Salesforce: End of Year, End of Hope


I am a bit behind in my Salesforce analysis due to recent distracting events so it is time to catch up. I did the actual analysis a while ago but neglected to write it up, so here it is. I have purposely ignored the more recent first quarter results, put out a few days ago, to minimise my bias in reviewing these. I will review these next month.

Alas, Salesforce continues to lose money and their financial situation worsened slightly this quarter. No doubt Marc will be hailing it as the best quarter ever but numbers do not lie.

The Late News

So what did Salesforce get up to in their last financial quarter?

Why Microsoft Beat Salesforce to Acquire LinkedIn

Salesforce Joins Apple and Google in Protesting Trump’s Anti-Transgender Order

Salesforce Opens Engineering Office in Microsoft’s and Amazon’s Backyards

Old Money and Stocks

How did Salesforce fare in the markets up to the end of February?


We can see that while, in the previous quarter, Salesforce sank into the sixties, the stock price did bounce back to the low eighties (and now sits around the mid-eighties). The biggest jump occurred at the end of 2016. I have no idea why.

Insider Trades

Fortunately, I recorded the Insider Trades when I did my analysis so I have the numbers.


2016 Q4

2017 Q1

2017 Q2

2017 Q3

2017 Q4

Insider Sales






Institutional Sales






Shares Held by all insider and 5% owners



As we can see, every quarter ‘insiders’ (such as those on the board, the CEO etc.) sell a bit less than 5% of their holdings every quarter. Institutions (banks, pension funds etc.) are also selling out at a slightly higher rate each quarter.

Yahoo also gave us a new statistic for the end of year of the total shares held by the insiders. The likes of Marc Benioff and all his board buddies hold little more than 6% of the total stock of the company. Every quarter these people say how well Salesforce is doing and yet they own so little of the stock. We know they are constantly selling stock but, perhaps, they are receiving free stock and therefore keeping their ownership stable. This new value will tell us over time.

Numbers of Note

Flattening Transaction Growth


The number of server transactions is still growing but the rate of growth has flattened to around 25% year on year.

It is interesting that revenue is now at a similar growth rate.


As I have mentioned before, while revenue growth has remained around 25% year on year every quarter for the last two years, transaction growth used to be a lot larger. In my mind, these two should go in lock-step; as new users come on board, transactions go up and revenues increase. I am keen to see if this will finally start to happen.

Salesforce is Too Costly

As we can see above, the cost of making Salesforce is growing faster than the money it can be sold for. This means the profitability of Salesforce will continue to deteriorate. The moving averages have also crossed now, confirming the worrying trend.

In fact, if we look at the cost growth, it is the highest it has been for over two years; Marc is falling into bad habits again.

More Money Printing


The growth of stock-based expense, the paying of employees in shares is growing at a higher rate than it has in the last four years. I will explore this more, in the future, when I do this year’s Lemonade Stand analysis but Salesforce is yet again getting drunk on printing their own money via shares.

The GAAP/Non-GAAP Difference

For the end of the year, Marc really cranked up the accounting acrobatics and rhetoric, clocking up a difference of 11 (13 Non-GAAPs to 2 GAAPs). Does Marc realise his GAAP numbers point to a deteriorating set of finances and, therefore, he is dazzling the crowds with something other than brilliance? Almost certainly.

Earnings Call Buzz Word Bingo


2016 Q4

2017 Q1

2017 Q2

2017 Q3

2017 Q4

Number of words




















































The stalwarts of Customers, Revenue and Cloud remain but, as we can see, at five quarters with less than ten mentions, Platform(s) and Software are no longer of interest to Marc and the team.

My guess is, rather than talking about the specifics of what Salesforce offers, he is selling hope, focussing on his Non-GAAP financials and the promise of what CRM software can do for a business.

Looking into the Future

As the next quarter results have come out, I will not predict what they say but I had predicted the last quarter for Salesforce would end with $2.3b in revenue and a break-even for profit. I was on the money for the revenue ($2.29b) but Salesforce sadly made a loss of just over $50m in the last quarter. Better luck next time, Salesforce.


Other than the bouncing back of the share price, from my perspective, it is another lacklustre quarter for Salesforce. Costs are growing fast, rhetoric is up and the insiders/institutions continue to sell their stock.

Next month I will revisit with the numbers that just came out to see if things have improved or worsened.


CRM Portals Metadata Essentials


This time last year I did a four-part series on setting up CRM Portal forms. It is very easy to do and no code is required.

In my current project I am using CRM Portal forms a lot and to make them even more powerful you need to use metadata. So here are some pointers for the metadata options for entity and web forms in CRM Portals.

Metadata are held in two entities:

  • Entity Form Metadata (for Entity Forms)
  • Web Form Metadata (for Web Form Steps, NOT Web Forms)

Let us look at the Entity Form Metadata first.

Entity Form Metadata


There are, as you can see above, six metadata options to choose from.


The one I use the most is Attribute. If you select this, you will need to also select the attribute you wish to modify.


Once this is done some of the things you can modify for the attribute are:

  • The label (Useful for long labels or labels constructed as questions)
  • Grouping fields to total a sum e.g. 100%
  • Grouping fields for a ranking scheme e.g. preferences
  • Grouping for multiple choice questions
  • Displaying option sets as radio buttons
  • Displaying lookups as dropdowns
  • Prepopulate the value of a field
  • Set the value of a field on save
  • Add a description for a field
  • Regex validation
  • Making a field compulsory (this is my preferred way of making fields compulsory as it ensures if the field is displayed elsewhere, it does not have to be
  • Modification of the error messages displayed on the form for the field


This allows the display of the notes associated with the record on the form and determines how the form user can interact with them.


There are also advanced options for adjusting things like labels.

One thing to note is that notes will only appear if they begin with “*WEB*” in the CRM entry. Without this they will not be seen. This is useful if you need to keep some notes private.


This simply allows you to change the section label on the form.


By default, a subgrid on the CRM form used for the portal form displays as read only. To allow more interaction, this metadata option allows for the configuration of:

  • Creating new subgrid entries
  • Viewing existing entries
  • Editing existing entries
  • Delete existing records in the subgrid
  • Deactivate existing records in the subgrid
  • Downloading the subgrid to Excel
  • Associating/disassociating records in the subgrid to the CRM form record
  • Allow the portal user to run a workflow on a record in the subgrid

When I wrote the Web Form part of my original tutorial, I did not know about the ability to modify subgrids but this certainly provides another option for dealing with the addition of child records as part of a form submission e.g. line items in an expense claim.


Like the section option, this simply allows for a label change.


This allows for the display of Activities as a timeline as well setting associated configuration options such as labels and whether attachments are made accessible.

Web Form Metadata

For Web Form Metadata we have the additional options:

  • Setting an Entity Form for the creation of fields on lookups
  • Setting up payments for events (this one is pretty involved so here is a description which may be useful if this is of interest)

Otherwise, as far as I can tell, all the options for Entity Form Metadata are available for Web Form (steps) Metadata.


As you can see, while CRM Portals makes the display of simple forms very easy to do, with metadata, we get an array of configuration options to make our forms even more powerful.

If you are setting up portal forms and cannot find a way to meet a request through standard configuration, metadata may be precisely what you are looking for,

An Innovative Solution For Defeating Shoulder Surfing


A client of ours recently had a problem with security. Specifically, shoulder surfing. The office they used was co-leased with another company and they feared the employees of that other company could walk past and see important information on the screens of their workers. Knowing KPMG is a leader in this field they came to us for advice.

What is Shoulder Surfing?

Shoulder surfing is where someone stands behind you, while you use technology and they gain access to privileged information. The most common scenario, familiar to many of us, is at the ATM, making sure no one is watching as we enter our PIN.

According to Secure:

  • 85% of those surveyed admitted to seeing sensitive information on screen that they were not authorised to see
  • 82% admitted that it was possible information on their screens could have been viewed by unauthorised personnel
  • 82% had little or no confidence that users in their organisation would protect their screen from being viewed by unauthorised people.

So the fears of the client were justified.

The main piece of software used by our client was Dynamics 365 (CRM) so I was brought in to assist.

Dynamics 365 (CRM) and Encryption

CRM has a comprehensive set of security options such as information encryption, field and record level security. However, there is little out of the box for screen-level security. In fact it is an area lacking in most modern applications. We had to think outside of the box.


The solution we came up with was comprehensive label encryption throughout the product. This way, if someone glanced over the shoulder of one of the workers they would not be able to determine what the information on screen referred to. The elegance of this solution is the fields are still transparent and editable, allowing the user to continue managing processes and entering data.

To ensure the users knew what fields were which and which entities were which, they went through computer user navigation training. This involved using an unencrypted system so the user could memorize where things were on the screen before using the production system.

How The System Looked

All levels of the system were encrypted. This is how the the navigation ribbon looked.


All entity labels were encrypted to prevent onlookers from gaining information on the browsing of the user. The users, having undergone their training, knew exactly where the entities they needed were. Similarly, views were encrypted to prevent wholesale data theft.


Even if a malcontent stood behind a productive user, with the entity, view name and column labels masked, they would be at a loss to gain useful information from the system.

We also encrypted the fields on the forms. However, we ran into a small problem due to the Social Pane.


While the Activities label took its cue from the entity encryption, the others could not easily be changed. I recommended the client move to the old Activity grid, as we used to have in previous versions of CRM, as this could be fully encrypted.

Even Advanced Find was protected from prying eyes.


Problems With Implementation

While the users took to the system without incident, the administrators had more difficulty. With the labels encrypted, it was hard to know which entities were which.


However, once the administrators were put through the same training as the users, the problem was resolved.


With the innovative encryption solution in place our client’s information was secure and with the intensive training, the users could navigate the system without issue.

As a gift to the community, I have also been given permission to release the source code for this solution to improve productivity and security for all CRM systems. If you are interested in implementing this “best practice” solution, you can obtain it here.

A Better Way To Use Connections


Connections have been with Dynamics 365 (CRM) for quite a while, replacing the old Relationship Role function. Relationship Roles allowed a user to link Accounts, Contacts, and Opportunities together whereas Connections allow the user to link practically any record.

Like quite a few features in Dynamics 365 (CRM), Connections has not really changed since its inception. While very flexible, the big problem with Connections is they are not very intuitive.


In the above example, it is not immediately obvious to an end user who is the parent and who is the child.

Even in the view, things are not much better.


So what can be done to improve this?

A Better Approach

I cannot lay claim to coming up with this brilliant idea. That title goes to one of my clients’ business analysts. She had the idea of mixing things up a bit. What if we move the Connection Roles and record names around to read more like English. In the above example, we get:


All we have done is swapped the order of the Role and Name fields on the form and slightly adjusted the Role name. So now, instead of reading “Neil Benson, Child” (a harsh characterisation in my opinion), it reads “Child of Neil Benson” which is much better.

Similarly on the Connections grid, who is the child and who is the responsible parent becomes a lot clearer.


All of these changes are simple and transform the Connection into something much more intuitive to use.

What About Advanced Find?

Using Advanced Find to query Connections is never easy and this trick does not help with the deciphering of Connection (To/From) and Role(To/From). For this particular client our solution is to create a series of System Views which handle the Connection navigation and, with these, the users can extend them to address their queries.


In all my years of working with Connections, this simple trick had never occurred to me which shows the power fresh eyes bring to a solution. If you have a client working with Connections I strongly encourage you to implement this simple change. The creation and management of Connections will become simpler and the users will have less confusion about how the relationships work between parties.

Wunderlist Saved My Life (And My Sanity)


I have been a bit quiet on my social channels for the last month or so because I was diagnosed with Type 1 diabetes. Commonly called “Juvenile Diabetes” it is often first diagnosed in children and is a result of a broken immune system attacking cells in the pancreas. My version of Type 1 diabetes has a name all of its own, LADA (Latent Autoimmune Diabetes in Adults).

The main difference with my version is how quickly it progresses. Typical Type 1 diabetes in children progress very quickly, completely destroying insulin production in weeks. With LADA it could be years before I need to use insulin. There is no cure and the cause for the immune system to go screwy is unknown. It happens to people of all shapes and sizes and my dodgy health and exercise regime have not caused it but did help in revealing it.

The last month has been spent getting educated and making some adjustments such as eating a bit healthier and getting organised to introduce regular exercise in my life. Weight management is a big part of living with diabetes and I have plenty to manage. The good news is my blood sugar levels are now stable and within the healthy range for humans and I am losing the love-handles. While I have an illness, I am not sick and intend to stay that way.

However, this post is not about diabetes so much as about how technology has helped me. Given I will be living with diabetes for the rest of my life, you can expect other posts talking about how technology can help people manage chronic conditions.

Being Diagnosed With a Chronic Disease

In this context chronic just means a disease which persists. If you or someone you are close to gets diagnosed with a chronic disease, such as cancer or diabetes, you get bombarded with a lot of information very quickly. You have to manage multiple appointments with multiple specialists and you have a million questions. You also have to educate your loved ones on what is happening and how they can help. This is on top of all the normal commitments you have in your life such as work and children.

Wunderlist To The Rescue

Over the last few weeks, Wunderlist has been, and continues to be invaluable. If you are not familiar with Wunderlist, it is available as a free download for Apple and Android devices and has its own web site (

Its function is very simple but well executed. In short, Wunderlist allows you to store lists of ‘things’ and store notes on them, as well as set up deadlines.

I have used Wunderlist in a variety of tasks to help manage the ramp-up of my illness.

Wunderlist For Reference Data

One way I am using Wunderlist is to capture information for me and others to refer to. Examples include:

  • Procedures such as when I should test my blood glucose levels
  • Weight-loss and diabetic-friendly foods at local eating places
  • Healthy recipes to cook at home
  • Lists for ‘friendly foods’ from the supermarket


Also, because lists can be shared, as my wife usually does the weekly shop, I can share the supermarket list with her.

Wunderlist For Questions

Questions for my ‘Care Team’ come to me at the strangest times. Having Wunderlist a device-reach away means I can record the question and get answers at my next appointment.


To Do Tasks

Finally, and more traditionally, I use Wunderlist to capture ‘to do’ tasks. Whether it is requests to do or buy something from the care team, a web site to visit, or periodic tasks.


As I do the tasks, I cross them off and they disappear.

Why Not Outlook?

I still use Outlook to manage my life but I could not afford to lose the diabetes tasks amongst the general ones. Also, for things like sharing lists, Wunderlist is so much friendlier.

Other Miscellany

Finally, a couple of other points. Firstly, Wunderlist plays nicely with Flow with a pre-built connector so it is possible to link Wunderlist to Dynamics 365. Also, if, like me, you use a stylus a lot (it is so much easier on my Surface Pro than using the track pad), the browser version of Wunderlist does not play well with styluses. Drag and drop requires your finger or a traditional mouse.


You do not need to be in my position to use Wunderlist but if you are working with a list or a series of tasks and need to have it available on any device and to share it with others, Wunderlist is pretty great and worth a try.

For me, without Wunderlist, the last few weeks would have been a flurry of scrappy notes on paper, a lot of stress and a constant sense of being overwhelmed. Precisely what you do not need at moments like this.

With Wunderlist in my corner, I was prepared and organised for my meetings with the health care professionals, have my life better organised and have a strong sense that I am in control. Wunderlist really has helped both my physical and mental well-being and is now an integral part of my management program.

A Configurable Customer Feedback Setup With QR Codes


As well as the blogging presentation at Ignite, I also did a major presentation on stage with Dynamics 365 wunderkind, Doug Daley.


In essence, we showed how the entire Dynamics 365 suite could be used to run a business with configuration (and a small amount of scripting).

Our Scenario

One aspect of the presentation talked about feedback from customers. In our case, the business was a micro-brewery, supplying a local pub and they wanted to capture feedback from the beer drinkers.

To do this, our hypothetical business provided free coasters whenever they delivered a keg. These coasters had a QR code on them leading to a feedback form.


Once the information of the form was entered, it made its way to Dynamics 365 (CRM).

This setup is completely codeless and applicable to most businesses seeking feedback from their customers. So let us get into how it was done.

Firing Up CRM

As we need a web address before we can create a QR code, we will work backwards. First of all, we need Dynamics 365 with CRM Portals. Fortunately, if you have a Dynamics 365 Plan 1 Business Application (the subscription which gives you access to the ‘traditional’ CRM modules) you get one CRM Portals web site for free.

If you do not have a subscription but want to see how this works, you can get a 30 day subscription here.

If you have Dynamics 365 but are unsure how to set up the portal, go to the Office 365 Portal site ( and head to the CRM Administration page (Admin-Admin Centers-Dynamics 365).


From here, select Applications and click the button to Manage the portal.


Select the Customer Self-Service Portal.


Once submitted and the portal has processed the request, you will have a brand new portal, directly linked to Dynamics 365.

Clearly the process has changed significantly since I wrote my primer on ADX Portals.

Setting Up the Portal Page

Once you have a portal, you will need to set up your feedback page. If you are doing it from scratch, you can follow the instructions of Part 3 (for simple forms) or Part 4 (for more complex, multi-entity forms). In my case I recycled the pre-built ‘Contact Us’ form (found at https://<portalname>

You should end up with something like this.


Creating the QR Code

The last part is the easiest. There are plenty of online QR Code generators. This is the one I used. Feed it the web address of your portal feedback page and then affix the QR code to whatever you like. You could even offer a reward for giving feedback and then have CRM automate the process on the back end.


There it is. Piecing together Dynamics 365, CRM Portals and QR Codes, a sophisticated customer feedback mechanism can be created with no code. Once in Dynamics 365, there is the full power of the platform at your disposal, such as PowerApps, Power BI, and Flow.

Microsoft Ignite Australia 2017: Blogging Like a Boss


I am up here at the Microsoft Ignite 2017 conference (#msigniteau) and I have been asked to give a 15 minute presentation on my experience blogging for the past 8-9 years. Rather than put together a PowerPoint, I thought I would write a blog instead and use this for my presentation.


I began writing ‘Leon’s CRM Musings’ back in August 2008. I used Google’s Blogger platform but, for various reasons, I found it quite frustrating so at the end of 2015 I migrated the blog to WordPress and renamed it ‘That CRM Blog’. I have written at least three articles per month for most of this time although I am now moving to two articles per month.

In terms of readership, I get around 1,500 views per month mostly from English speaking countries (USA, UK, Canada, Australia, and India).

Here is what I have learned.

Get Good Tools

Open Live Writer

Usually I write my blogs with Open Live Writer but, as I have not brought my personal computer up to the conference, I am writing directly within WordPress. Open Live Writer is good because it works offline and allows you to manage multiple blog sites at once. I actually have a couple of other blogs I write so being able to do everything in the one place is very useful.


I employ the old writers’ trick of carrying a ‘notepad’ with my wherever I go to capture article ideas. In my case it is a Word document on OneDrive. It literally has five pages of titles for potential articles. These days I would use Wunderlist. If you are unfamiliar with Wunderlist, check it out. I use it for recipes, to-dos, and a whole raft of things.


These days I write my blog on WordPress. I have a free account and it does the job really well. If you are unsure how to use WordPress and the many add-ons available for it, go to YouTube. There are plenty of one-hour tutorials on there which, after watching one, will make you a guru.

Analytics:, WordPress Stats, Google Analytics and a blog statistics tools are a simple way to gather information on your articles and the blog in general. Good for information and feedback but they should not be the focus.

Distribution Channels (LinkedIn, Facebook, Twitter, Internal Collaboration)

Reviewing my statistics, it is clear a good amount of the traffic to my blog comes from the promotion I do on these channels. LinkedIn is, by far, my favourite. I have subscribed to 50 groups (which used to be the maximum) and if my blog article is relevant to one of the groups, I promote it. I could use social automation tools to help with this process but, at this stage, I do it manually.

I also post my articles on KPMG’s internal collaboration site. Regular posting is a great way to get your name familiar with people who you would ordinarily not interact with as well as establishing a perception of yourself as an expert in your field.

The key message here is write once, distribute many. This talk is a great example of this as my blog serves as my presentation, the post-presentation collateral, and a blog article.

Keep Your Motives Pure and Be Authentic

If you are not writing a blog because you enjoy it, you are doing it for the wrong reason. Doing anything you consider a chore is hard to maintain. Also, if you are doing it for the money, you are doing it for the wrong reason. I make zero dollars from my blog and I am fine with that.

Similarly, be generous in your content. Share your intellectual property with no expectation of return. Delivering value is a keep part of blogging so make sure you do.

In terms of how to write the blog, I write as I speak and try to be myself. My hope is if you asked me about a topic I had written about, you would hear something very similar to what I had written. Similarly, if I gain followers, I would hope they like my articles for their content and the person behind them.

In showing the person behind the article, I recommend making a splash. Be bold, express an opinion. I have been called a ‘Salesforce Hater’ for some of my articles. I wear it as a badge of honour and being ‘the Dynamics CRM guy who keeps tabs on Salesforce’ has not hurt my reputation at all.

Finally, be dogged in maintaining your brand and reputation. Do not steal content, do not do paid endorsements without disclosure. I write book reviews and software reviews in exchange for a copy but I give full disclosure in my articles and make it clear that I will be impartial in my assessment.

Reputations take a long time to build but can be lost very quickly. A friend of mine, who knows CRM very well and is an excellent consultant has a blog and, unfortunately, stole content when he was short of time and wanted to publish. This killed his reputation in the small CRM community.

You Are Your Best Audience

In terms of what to write, my best advice is write what is interesting to you. The topics I write down in my Word document are ones which are interesting to me. The topic I choose to write about in my list is the one which is interesting to me at that moment in time. If you want to sanity check or refine the scope of your blog, check the analytic tools. I recently blogged about my most popular articles in 2016. This gave me a very clear message about the kinds of articles my audience enjoys. I will still write for myself but, if there are a few topics which interest me, my audience’s preferences give me a great way to decide what to write on.

Do Not Sweat the Small Stuff

There is a bunch of stuff I do not do which I could. Things like using clickbait headings e.g. I could label this blog article “25 Things to Make You a Blogging God” and it might get more hits. I prefer to generate my audience through word of mouth than manipulation but that is me.

I also do not worry about search engine optimisation or keyword seeding my articles to get hits. I simply cannot be bothered. I write and if people enjoy the articles, great stuff. If they tell others about them, even better.


The best tip I can give is just start writing. At first it will be random and disjointed but you will develop your own rhythm, especially if you commit to write regularly. Also, there is no better way to improve your writing than to write regularly and a blog is a great way to do that.

Finally, enjoy the experience. You will gain a reputation and people will appreciate your efforts. I had been at Microsoft Ignite Australia 2017 for no more than a couple of hours and I was approached and congratulated on my blog by a Regional Director. You simply cannot buy that kind of exposure, not to mention the boost to the ego.