Moving To Two Posts A Month


For six years I have put out three blogs per month. While I cannot go into too much detail I have been encouraged to participate in the community across a more diverse range of channels. To this end, I intend to devote more time to:

  • Event participation
  • Publishing white papers
  • Community speaking engagements

This, in turn will leave less time for blogs so I will be going down to two blogs per month i.e. around 24 per year. Also, if you are considering writing a white paper and need a co-author or need someone to speak at an event, feel free to reach out.

Analyzing And Clearing Space In Dynamics 365 (Dynamics CRM Online)


For Dynamics CRM Online you pay for the amount of storage you use. Therefore, it is important to keep on top of how much space you are using and how quickly it is growing.

If I am a CRM Administrator in my client’s systems, I will get a warning when space is approaching capacity.

Storage Email (002)

So what do I do when I see this? Generally I am not an Dynamics 365 Administrator so accessing the details through the portal is not an option. I have access to CRM and that is about it.

Audit Logs

If you have been liberal with your auditing, the audit logs can blow out. A common problem is integration to an entity will trigger the creation of audit logs. Lots of integration transactions means lots of audit entries and there goes your storage.

Tracking the size of audit partitions is quite easy. You go to Settings-Auditing-Audit Log Management and the size is shown.


However, there is a problem. While, in the past, you could delete date ranges of log records, this is not possible in the most recent versions of Dynamics CRM Online. You can delete the partitions (split into calendar quarters) but only if they are not the active partition. As I am writing this in 2016, the partition in the screenshot is active and I can do nothing to reduce it. I am stuck with the 3G of audit entries.

The moral of this story is be very careful what you audit. In this case, we were auditing the Contact entity and also integrating to Contacts. The initial load of records from the external system blew the audit logs out. Roll on the new year.

Reviewing the Size of Common Entities

There are no tools in Dynamics CRM Online to review the sizes of ‘entity tables’. However, there is an excellent free third party tool which does a great job of pointing you in the right direction.

The UDS Storage Analyzer gives a report of how much space the various entities are taking up in your system. To get the solution file, you need to provide an email address but that is it. Once you install the solution into your CRM instance, you just double-click on the solution entry in the Settings-Solutions list and a report is generated in a few minutes.


This will guide you to the entities taking up the space and, if you run it regularly, it will give an indication of growth rates.

Email Attachments and Notes

In the case of email attachments and notes, you can also, indirectly, get an idea of size through the Advanced Find. File size of attachments is stored as a field so asking for all emails or notes where the attachment is of a certain size can also give insight into outlying records.


Deleting Records

Other than audit which, as mentioned, is managed through the Audit Log Management area, most other entities can be managed through Bulk Deletion (Settings-Data Management-Bulk Record Deletion).

The bulk record deletion guides you through a wizard to identify the records to delete and then CRM schedules a job in the background to delete them. The wizard uses an Advanced Find interface to select the records. For example, if you wanted to delete a large collection of workflows which were stuck in a Waiting state because the configuration did not account for all situations appropriately, you could use something like this.



While tactics can be put in place to handle storage needs, such as integration to OneDrive or SharePoint, there are times when systems get weighed down with data. At these times you need to work out what is eating up the storage and what needs to be done. Using the tools above you should be able to get a handle on what is happening and bring the situation under control.

Installing Windows 10 IoT onto a Raspberry Pi 3


A bit of a departure in this blog as I talk of my new adventures into the Raspberry Pi. I am presenting at Microsoft Ignite Australia with Dynamics Wunderkind Doug Daley and part of this is showing how the Internet of Things can interact with Dynamics 365.

The first step is getting a ‘Thing’ to send information back to the internet or, in our case, Windows Azure so we can feed it into Dynamics 365.

In our case, that ‘Thing ‘is a Wii Balance Board talking to a Raspberry Pi.

What is a Raspberry Pi?

A Raspberry Pi is a computer the size of a largish business card which costs around US$35. For us Aussies, it is around $55. This is what it looks like.


This is the latest version, Raspberry Pi 3, which comes with WiFi and Bluetooth built in. Power is via a Micro USB port. Basically you plug it into the HDMI port of a monitor, connect a keyboard and mouse, insert a Micro-SD card with an OS on it and power it up and you have a working computer.

Where Do You Buy One?

In my case I bought it from Element 14. I also bought a power supply, pre-loaded Micro-SD card and plastic case. I had a spare keyboard, mouse and HDMI cable so no worries there. What is good about Element 14 is, for Australian buyers, they distribute within Australia so no problems with strange-shaped plugs or expensive shipping. They even send to PO Boxes.

What Happens When You Boot It Up?

Once you have plugged it in and booted, the default operating system starts up (Raspbian).

Image result for rasbbian

This is a form of Linux with a GUI so even if you do not know the essentials of Linux you can still mouse around. It even comes with Minecraft. In my case I do not want to use Raspbian but Windows 10 IoT.

What Is Windows 10 IoT?

Windows 10 IoT is not a standard version of Windows but one which acts as a foundation for IoT apps you can install via Visual Studio or directly. How you install these apps will have to wait for another blog.

How to Install Windows 10 IoT onto the Raspberry Pi (IoT Dashboard)

There are two ways to get Windows 10 IoT onto the Raspberry Pi if it is not on the Micro-SD by default. The first is to download the IoT Dashboard onto a Windows 10 device.


The process is pretty straightforward but, for me, when it came to mounting the ISO file, which sets up the OS, the process ended abruptly and errored with “Failed to unpack installer”. Online forums suggested enabling the Administrator account on my Windows 10 PC and running it through this but this seemed a bit extreme so I looked for another way.

How to Install Windows 10 IoT onto the Raspberry Pi (NOOBS)

The other way to install a new OS is through NOOBS. NOOBS is sort of the BIOS for the Raspberry Pi and can be accessed by hitting the Shift key on your keyboard when you boot.

With the version of NOOBS that came with my Raspberry Pi, WiFi was not supported when booting up NOOBS and a network cable was needed. I am told that the latest version of NOOBS fixes this and WiFi works. Either way, a set of OSes appear which can be loaded onto the Micro-SD card from the internet.

Image result for NOOBS

Selecting Windows will begin the download process. This will be at least a Gig or two of data so be careful of your internet charges.

Once done, you reboot and, with any luck, you will be booting to Windows 10 IoT. In my case, my HDMI television was sucking too much current and preventing the boot process but once I plugged the Raspberry Pi into a normal monitor everything went fine.



If you are IoT curious or Linux curious, the Raspberry Pi might be an interesting way to go. It is inexpensive and plays nicely with Arduinos. If you are not sure and want to see it in action, feel free to see Doug and I at Ignite.

Salesforce: The Old Dog Cannot Learn a New Trick


Image result for dog accountant

I had such high hopes for Salesforce. Two quarters in a row with a profit and a third would make it a pattern (one is an outlier, two is a coincidence, three is a pattern). Alas, Salesforce failed to come through with the goods and have fallen back into the bad habit of losing money.

News At The Hydrant

Recent Salesforce news of note:

Salesforce breaks up with Microsoft

Salesforce cries foul at Microsoft’s acquisition of LinkedIn

One of the reasons Salesforce dropped its Twitter bid

The Dog-Eat-Dog World of the Stock Market

The markets have not been kind to Salesforce since the latest quarterly announcement (November 17). Whatever they said was not what the markets wanted to hear. Since the announcement, over two weeks, the price has lost around 10%. You may recall that at the beginning of the previous quarter, the price was in the low eighties and now we are in the sixties.


Let us examine what the executives and institutions thought and what could have made the overall market so unhappy.

Insider and Institutional Sales

The fact is executives exclusively sell Salesforce shares but do not buy them. In the last six months, executives have sold over two million Salesforce shares and purchased zero. Here are the sales as a percentage of holdings.


2016 Q3

2016 Q4

2017 Q1

2017 Q2

2017 Q3

Insider Sales






Institutional Sales






While the percentage is reducing for both insiders and institutions, the sell-off continues. Why is it the executives continue to talk about each quarter being the “best so far”, encouraging employees to invest, while they divest their holdings?

Numbers of Note

Back to Losses


The last couple of quarters saw Salesforce going from strength to strength. Margins were up to 10%, which is great. However, this quarter, we are back to square one with a 3% loss on sales. You can dance with the numbers as much as you like but a real accounting loss is never sustainable and rarely a good thing.

Flat Revenue Growth and Accelerating Costs

Historically, the market has responded to strong revenue growth. Here are the year on year revenue and cost growth charts.


As you can see, on a yearly basis, revenue growth is pretty much flat at 20% (nothing to be ashamed of, by any means). However, for the last couple of years cost growth has been accelerating and we have crossed the threshold with cost growth now outpacing sales growth.

While revenue growth was larger than cost growth, margins improved. However, now we will start to see margins deteriorate again if things do not change. In other words, there is no way for Salesforce to become profitable while the green line is above the red one.

Perhaps the drop in share price is temporary or perhaps the market is starting to care about profitability.

Staff Growth Slowed


Staff growth has tanked this quarter. It does not appear to be a seasonal thing as staff growth increased in the previous Q3 quarter.

Transaction Growth Slowing


We finally have enough data to look at the year-on-year trending of the transactions from the Salesforce Trust site. While still growing, the trend is clear. Every year the number of additional transactions is less. Looking at the revenue graph above, over the same time period revenue growth was constant, around 20%.

Were Salesforce handing out twice as many free/heavily discounted subscriptions for every fully paid one a year ago? Has this practice now stopped due to financial pressure? I really do not understand how the transactions and revenue can be so out of step.

Employee Stock Purchases Growing Significantly

This quarter, the stock-based cashflow jumped 42%. This is Salesforce’s main source of cash and represents staff purchases of Salesforce stock. While the executive are systematically selling their stock, the company is keeping itself solvent through the stock purchases of its employees.

Overall Summary

So we have a company maintaining a reasonably constant revenue growth but accelerating marketing spend to achieve it. They are making a financial loss and slowing down in terms of employee and transaction growth. To keep cash coming in through the door they are ‘printing’ shares and selling them to employees. All the while, the executives are selling their shares and pocketing the cash.

If the market sees a fraction of the above in their analysis of the company, it is not surprising the share price is falling.

Dog Bowls of Delusion

Measuring the difference between Non-GAAP (accounting trickery) and GAAP statements in the transcript, Marc’s Golden Retriever Koa receives three dog bowls. The transcript has three Non-GAAP statements all about profit and, not surprisingly, turning their GAAP loss into a Non-GAAP profit. GAAP statements are nowhere to be seen.

Earnings Call Buzz Word Bingo


2016 Q3

2016 Q4

2017 Q1

2017 Q2

2017 Q3

Number of words



















































Here are the most common words uttered in the latest earnings call transcript by Marc and the executives. Sadly, Marc no longer talks about Service, Cash or Dreamforce but he does talk about customers as much as he talks about his own company.

Running a close second is his talk about revenue. Earnings and profit are not mentioned once.

Talk about platforms and software is on the wane with both risking falling below the threshold of being mentioned ten times in the most recent five quarters.

Looking Into the Future

Last quarter I predicted revenue at $2.3b, which was quite far from the mark (about 10% off). Similarly, I predicted a profit of a few percent, which they also failed to deliver.

I will double down and predict revenues of $2.3b again and a breakeven on profit. Without a steady trajectory, Salesforce proves quite hard to predict.


I had big hopes for Salesforce this quarter and my prediction reflected that. Unfortunately, it was too good to be true and the executive have put the company back to where they were a year ago, struggling to find profits and control spending.

Turning their back on Microsoft and getting friendly with Amazon seems to be their strategy for success. I am not sure how this will work as Amazon does not have the breadth of services and, as I see it, the opportunities to make the sum greater than the parts but we may have better insight into this in the next quarter.

Queues vs Teams And When To Use Them


I am finally working on a project which has forced me to come to grips with Queues. Queues have been with Dynamics CRM (I assume we still call it Dynamics CRM) for quite a while and, jaded by the limitations of the earlier incarnation, I never had a lot to do with them. However, back in CRM 2013, they got a facelift and made more useful.

Most projects I worked on since then have not needed Queues as they would complicate what was, generally, a simple process. Mostly I have used Team ownership to manage things like Case processing, which works really well.

On my current project, the client wants to triage emails before moving them to Cases and using Team ownership does not quite cut it.

How To Use Teams Like a Queue

Let us start with the simple model: Teams. Records in CRM can be owned by Users or Teams. So, how I often set up Case management is to have a Dashboard with two lists in it:

  • Cases owned by my Team
  • Cases owned by me


The user then takes a Case from the Team list (auto-assigned as part of the creation process or via Routing Rules), assigns it to themselves so it leaves the Team list and goes into their list. Here they process the Case and close it.

If they need to pass it on to another group or another User they simply change the owner and it appears on their dashboards.

Users can be part of multiple Teams and the Team list only shows the Cases in the Teams they are part of.

The rules for the Team list are also crazy-simple these days.


With service management components like Routing playing nicely with Teams, it is a simple and effective solution.

Going to Queues

If you are using incoming email as an enquiry channel, you will need a Queue to bring in the email records from Exchange. Even with Team ownership, with emails being converted to Cases via Automatic Record Creation, you will still need a Queue.

However, beyond this, if you are processing records with Queues, you get capabilities you do not get with Team ownership.

Firstly, a Queue can hold multiple entities in one list. So, if you want to mix emails and Cases in one list, you can. With Team ownership you are limited to standard views which can only show one entity at a time.

Queues also lend themselves to managing entities like emails which are already, in effect, inactive and, therefore do not have a good concept of open or closed, like Cases.

Managing Records in Queues


Rather than manipulate the record, as we do with Team ownership, we manipulate the Queue Item which is an entity linking the record we want to process i.e. the email, to the Queue.

We can Pick (‘assign’ the item to me for processing), Release (‘unpick’ an item and allow someone else to Pick it from the Queue), or Remove it (take it out of the Queue).

Using these functions we can manage an email via Queues as we would a Case through Team ownership and status management.  This is ideal for managing records where ownership and status management are restricted, as with emails, or where we wish to manage a range of entity types in a consistent way.


I still lean towards using Team ownership as my default position to manage record processing because of its simplicity. Teams are easy to manage and clients understand how they work very quickly.

However, sometimes you need something more. In the case of my client wanting to triage emails before converting them to Cases, Queues was the way to go.

In fact, on this particular project, by the nature of how it has evolved, we are using both techniques. Firstly, emails are triaged using the Service-Queue lists. Once the significant emails are identified, they are manually converted to Cases by the User and assigned to the most appropriate Team. Converting an email to a Case also automatically removes it from the Queue.

Once it is a Case, it appears on the User’s dashboard for allocation and processing using Team ownership. The system works pretty well with, in my biased opinion, the best tools employed when they are needed.

If you are wondering which way to go in managing records, consider the above and see how you go.

Post-Summit Debrief


It has been a week since I returned from the MVP Summit and, as usual, it was great. What made it all the more unique was Election Day coinciding with Summit. Like many major events, I know exactly where I was when the Electors of the College system got told by the people of the USA who to consider voting for a month later (yes, it is a weird system). In this case, I was in Joey’s Bar in Bellevue emptying them of Old Fashioneds.


Reveal Your Secrets

As usual I cannot reveal too much about what was discussed as it is under strict NDA. The product team presented for three days on various aspects of the product from the future direction of the look and feel, through to the architecture.

From Jujhar Singh down, the team presented the direction they are heading and, incredibly, asked for our feedback. It really is amazing that the architects of a global software product take time out from their insane schedules to reveal their dark secrets to a group of relative strangers for a few days.

What I will say is everything they said about where they are taking the product made sense and, in terms of the product, unlike in other years, there was very little pushback from the MVP crowd.

The Giants of Industry

Other than meeting the product team the other ‘giants of industry’ at the conference were the other CRM MVPs (now called Business Solution MVPs). This “Who’s Who” of the CRM community is a serious drawcard for flying 20-odd hours, each way, to get to the Summit.

This was the closest we got to a group photo this year and, for all the developers reading (yes, both of you), that is indeed Scott Guthrie on the right hand side in his iconic red shirt (for the others, if you do not know who Scott is, apparently he has something to do with Azure and .Net). I am on the far left doing my best impression of a pregnant monk.


All In With the MVPs

There was also time for some play. Turning out to be something of a Summit tradition, the CRM MVPs had their friendly poker game (No Limit Texas Hold ‘Em, $20 ‘In’) with the winner shouting everyone a drink at Joey’s. This year, the honor of winning and shouting everyone a drink went to Gus Gonzalez. Gus tells me that the fact he provided the poker deck and was the dealer for the entire game is correlated with him winning but, in no way, is there a causal link. Who am I to argue?


And, as usual, Santa made his appearance to hand out gifts to the good CRM MVP boys and girls as part of the Summit Secret Santa. Santa’s knee got a good workout this year and everyone went home with a smile and a gift from a different part of the world.



For those of us in far-flung locations, the MVP Summit is quite an undertaking. We are away from our family for around a week, of which a couple of days are spent sitting in a chair flying halfway around the world.

However, it really is worth it. Seeing the direction of the product, meeting the product team and playing catch up on the areas of the product where I just have not had time to explore (and there is so much to get across these days) is time well spent.

Equally worthwhile is catching up with my fellow Business Solution MVPs. They are all excellent, passionate people. Whether  it is playing poker, catching up for a few drinks or discussing politics, all of them are great to hang out with in the flesh, rather than briefly interacting with them online.

I expect I say this every year but one of the biggest highlights for being an MVP is the Summit and hanging out with this group of crazy CRM fanatics. If you have the chance to join us, I highly recommend it.

Questions For The CRM Product Team


In a week’s time I will be doing the flight across the Pacific Ocean to the USA to be at the Microsoft MVP Summit. For at least three days, me and 40 or so of my MVP buddies will be locked in a room with various members of the CRM Product Team. We will learn lots of things which I will not be able to blog about and which you will have to wait until the next major release or conference to find out about.

The good news is one of the sessions in the agenda is where we get to ask the CRM Product Team questions about when specific features will be fixed or delivered and they get to make vague commitments in kind.

So, if you have questions for the Dynamics CRM Product Team, send them through as comments and I will ask them at Summit.