CRM Navigation Hacking with Bookmarks

CRM Navigation Hacking with Bookmarks

When you spend your days working closely with an application like Dynamics CRM, such as when customizing or developing solutions for your customers, your mind will often times be working much faster than the application. You know exactly which feature you want to access, but if you need to navigate through several levels of menu hierarchies to get there, the process may be too slow to keep up with your train of thought, making it hard to concentrate on the actual task at hand.

My personal strategy for reducing the cognitive burden involved with navigating inside Dynamics CRM has been the use of smart bookmarks. Here’s some tips on how I’ve set up my current working environment. If you have any similar CRM productivity tips of your own, please do share them in the comments section below.

Launching New Tabs from “Quick Nav”

While piling up a mountain of open browser tabs may not be great for your productivity either, the cost of moving between tabs is still lower than constant in-app navigation between menus. When working with CRM customizations, I always tend to have the end user content in one tab (views or record detail forms) and the Solutions view on the other one, so that I can quickly access the component I want to modify and validate the results with an F5 on the other tab.

Dynamics CRM 2013 and beyond unfortunately don’t support the standard convention of right-clicking on menus and opening them up in a new browser window. Nothing stops you from opening CRM in a second tab and working with the settings via it, but this means you always have to start from the first page and navigate back to where you wanted to go. To speed things up a bit, I keep a “Quick Nav” available menu in all my browsers, created as a folder in the favorites/bookmarks bar that I also keep open at all times.


So where exactly do those bookmarks lead to? A specific menu in a certain CRM organization? Nope, those are generic bookmarks that apply to the currently open CRM organization. They work in any CRM 2013 or CRM 2015 environment, on-prem or Online. You see, they are not actual bookmarks with a static URL pointing to a resource somewhere, rather they are bookmarklets that contain a short piece of JavaScript. [Read more…]

CRM 2015 Rollup Fields: The Gotchas

CRM 2015 Rollup Fields: The Gotchas

In an earlier blog post in December, I described one use case for the new Rollup Fields feature introduced in Microsoft Dynamics CRM 2015. This example involved rolling up data from email events tracked via ClickDimensions and summarizing this on the contact’s form, so you’ll want to check out the steps listed there if you don’t have any hands-on experience about this new feature yet. In this post I’m going to dig deeper into the details about how Rollup Fields actually work behind the scenes and what limitations you should be aware of when considering whether they are the right tool for the job in your own use cases.

Rollup Schedules

The first thing you need to understand about Rollup Fields is that they are not updated in real time. If you’re familiar with the difference between the real time workflows introduced in CRM 2013 and the asynchronous versions that were available in earlier versions, then this is something a bit like that, but not quite. As you might know, the traditional background workflows were triggered by an event that took place on a CRM record and the resulting workflow instance was scheduled to be executed by the asynchronous process running on the CRM server at the earliest possible date (depending on the overall workload on the server). Whereas this usually meant a delay of perhaps a minute or two at most, the new Rollup Fields are even further from real time than this.

As we saw in my earlier post, when you create a new Rollup Field, a new mass calculation job will be created for the field in question. This will be scheduled 12 hours into the future, based on the assumption that this will most likely fall outside the office hours when actual CRM end users are working with the system. (Because us CRM customizers or system admins never work during the night, right? Yeah, what a funny assumption that is, but anyway…) The reason for such precaution is that the very first calculation job will have to populate each and every record that exists for that entity, which could be up into the millions, depending on what type of data you manage in your CRM.


So, does this mean the Rollup Fields only get updated once per day, during that nocturnal schedule? No, actually they get updated once every hour. If you go to the Settings – System Jobs menu you’ll see that there are jobs of type “calculate rollup field” type running for each of your entities that have one or more Rollup Fields defined for them. They are not scheduled to start at exactly the same time, but they all run at one hour intervals. Another thing worth noting in the Rollup Field implementation architecture is that these calculation jobs are only applied to records that were created, updated or deleted after the last job finished. No point in processing a million records if only a handful of them could possibly have new values to be calculated, right? This is why the initial rollup and the recurring rollup requests are handled by different system jobs in the CRM platform.

Rollups and Workflows

Now that we know the Rollup Fields may not show a current values in the UI for quite some time, the next logical question to ask is: anything we can do to speed the calculations up? As an end user, you could go and look at any Rollup Fields that have been added onto an entity form which you have the necessary rights to view, then hover over the field and click the “recycle” icon to force the recalculation of the Rollup Field value. As a developer, you also have the option to force a Rollup Field to be recalculated on demand via a plugin, by using the CalculateRollupField message. As a system customizer… Well, there’s not much you can do, at least in the CRM 2015 version. [Read more…]

Welcome to!

Welcome to!

We have moved! The Surviving CRM blog has a new domain, a new host server and even a slightly modified blog theme. Previously hosted at my personal domain’s subfolder, the blog can now be found simply by typing in the URL The page loading times should also be visibly better now, thanks to a more powerful hosting environment for my WordPress installation.

Back in 2008 when I launched this blog, it was mainly just a notebook for my random thoughts around Microsoft Dynamics CRM. Created as a side project on my little web hotel subscription for trying out all the cool new PHP apps out there (before the cloud era had really started), it was never intended to be a very robust setup but rather just something quick, dirty and cheap. As years passed by, more and more blog content was posted, Dynamics CRM as a product kept on growing and so did the traffic to this site. It’s been a great honor to have such a large number of readers come and visit my blog, but at times I’ve felt like I haven’t been able to deliver the optimal user experience for content consumption in terms of website performance. Hopefully this new hosting service provider can better meet these grown expectations.

At the same time when I migrated the bits to a new location, I also decided to do a bit of a UI refresh for the blog. I realized I had been using the same WP theme for almost five years already, which is an eternity when it comes to websites. I didn’t have the time to perform any major update project and my own web designer skills are nonexistent, but luckily the Streamline Pro theme from Studiopress suited my needs quite nicely. I’ll need to spend some time studying all the cool things that the Genesis framework allows you to do with WordPress, but for now the important thing is to have an easy to read layout and design for my CRM blog posts.


If you do discover any broken links or features that are not working with the new blog theme and URL, please do let me know in the comments. Oh, and if you have any bookmarks or RSS feed URL’s pointing to the old domain, don’t forget to update them to the new domain.