Tag: usability

  • Working with Price List Items in Dynamics CRM

    Working with Price List Items in Dynamics CRM

    Despite of the recently refreshed user interface of Dynamics CRM 2013 that offers a much more fluid user experience than previous versions, there are still areas in the application that are not very user friendly. Many of these revolve around product and price information, regarding how it is presented and what actions are allowed on it. In this blog post I will drill into a common scenario that organizations who use CRM for managing price list data may run into and present a few options on how to make their lives easier.

    Price List and Price List Item Views

    A pet peeve of mine in Dynamics CRM has always been the UI that the Price List entity offers to the end user. As many of the readers of this blog will surely know, price list items are the way how products, units, price lists and the all important price figures come together in the CRM data model. If you want to leverage the product catalog and any price calculation features in the sales module, you’ll need to work with price list items and create at least one of them per each product you plan to include as line items on your opportunities, quotes, orders and invoices.

    Unless you’ve built a custom integration to a back-end system that will automatically provide the latest pricing information for CRM, there’s quite a bit of work involved in maintaining individual price list item records when prices change or new products or lists are introduced as a normal part of the day to day business. When a CRM user opens a price list record, a reasonable assumption to make would be that he or she is interested in reviewing the pricing information given to the included products. Unfortunately the Dynamics CRM UI does not make such an assumption, rather it thinks the user is interested in only viewing a list of products and their units but not the actual price information in the amount field. Here’s what the default associated view of the price list items gives us:

    Price_List_Item_CRM_2

    Well, that sure looks like a good candidate for some entity customization work. Yes, it does, but there’s a “but”. When you open the customization UI and navigate to the price list item entity, you discover that the views are actually not customizable. Nor can you add any of your own views for that matter, which means you’re stuck with the default UI. If you think that the price list item entity should allow view customization, then there’s a suggestion on Microsoft Connect that you definitely should go and vote for (if you need help in registering to Connect itself, see this post).

    Exporting the Price List Item Data to Excel

    With this limitation in mind, what are our options of producing a true price list view with product and price information shown side by side? For any Dynamics CRM power user the first thing to come to mind will surely be to export the data into Excel. Unfortunately the uncustomizability of the Price List Item entity also means it has been blocked from showing up in Advanced Find, which would normally be our tool of choice for preparing a CRM data export.

    Luckily there’s still an Export to Excel button visible in the ribbon of the price list form when we are viewing the associated price list items view. Clicking this will present us with an option to either export the data in static format (which would just give us the same columns as the current view) or to create a dynamic Excel sheet in two possible formats. Both of the latter options, pivot table and worksheet, present a follow-up dialog where choosing the required columns from the price list item entity and even any parental entity like product is possible.

    Price_List_Item_CRM_3

    When you export the view into a dynamic Excel sheet in an on-premises CRM environment, you can actually go and look at the SQL query that the view is using for pulling the data from CRM to Excel. Just click “Change Data Source – Connection Properties – Definition” and copy the query from the Command Text window into Notepad. With a little tweak that removes the reference to the currently viewed price list record we can use the same dynamic Excel sheet to retrieve price list item data for all the price lists in the system.

    Price_List_Item_CRM_1_small

    In the SQL query you’ve copied to Notepad you’ll find a reference to the price list from under which we exported the related price list items. It will look something like this: where  (“productpricelevel0”.pricelevelid = N’CEA84006-AD7B-E311-9405-00155D6214FA’) . Just remove this whole where clause, thus expanding the query to retrieve all records from the price list items table in CRM, regardless of the associated price list. Then with the Excel pivot table tools you can group and filter the data any way you please, effectively creating a price list report that views the latest information from CRM in a layout that best suits our purposes. (more…)

  • Spring Cleaning for Your Dynamics CRM System

    CRM systems have a tendency to suffer from an increasing amount of entropy as time goes by. Not only does the rate of accurate information available from them decrease as data quality decays over time (especially if no one’s in charge of actively maintaining it), they’re also susceptible to a phenomenon I’d describe as “the illusion of having data”. This is the assumption that simply defining a data model that holds a place for specific attributes or entities would actually result in data being collected into them.

    “Build it & they will come” could be translated to “customize it & they’ll use it” when it comes to CRM systems and it is as good a strategy in designing business information systems as it is in any other walks of life – meaning not very. Sure, during the initial requirements specification phase for a CRM system it may feel like there has to be a field added to the customer’s profile for every possible variable that the business may need in the future. After having used the system for a while you’re very likely to be confronted with the reality that very few if any of the records have any data entered into these fields. Or even worse: you just continue to assume to have customer information that doesn’t really exist, potentially building further process automation and reporting on a very shaky foundation.

    CRM_spring_cleaning_4Since it’s quite a common phase in the lifecycle of a Dynamics CRM organization to sooner or later face a situation where you want to clean up the system from legacy data structures that no longer serve their purpose, I want to highlight a couple of tools that will help you on this journey towards a better organized CRM system.

    Finding Fields Not on Forms

    Persons who may get assigned the role of being the CRM system administrator alongside their “actual work” often approach the application as if it would consist of a set of forms that contain fields and… well, nothing much else. What this means in practice is that whenever a new business requirement comes up where additional information should be captured to serve a new process, product, organization structure or what have you, they’ll typically open either the account or contact entity and start adding new fields onto the forms.

    As this process is repeated over and over again, the number of fields will grow and at some point some of the older ones will probably get removed from the form in an effort to make the system less cluttered. They’ll most likely be left in the system with their Searchable property still set to “Yes”, meaning using Advanced Find can become a nightmare with all the legacy fields listed. Also system views may still be using these fields that can no longer be edited. With the number of fields growing every day, it can simply become overwhelming to identify what’s in use and what’s not.

    A good first step for finding the legacy data structures is to list the fields that are no longer used on any forms of the entity. Since Dynamics CRM by default does not offer tools for such analysis, the next place you should look for a solution is the community tools on CodePlex, starting from the nr. 1 toolkit for a CRM customizer, which is of course XrmToolBox. As it so happens, there’s yet again a tool in there that will help us in achieving our goal. The Metadata Document Generator offers a setting that allows us to export a list of attributes for the selected entities that are NOT contained in any of the forms (remember that there can be more than one per entity).

    CRM_spring_cleaning_2

    By choosing this setting and complementing it with the “include Valid for Advanced Find information” checkbox we can generate Excel sheets per each entity that list the unused fields, at least when it comes to the UI side of things.

    Finding Fields With Little or No Data

    Once we’ve spotted the fields that have potentially become redundant and we’d like to get rid off, the next question in our minds is likely to be how to verify whether there is any actual data stored in them that should be preserved. Similarly, just because a field is present on a form, that hardly proves that it would be populated for the records in the CRM database. These are the kind of questions that we can’t answer via metadata alone, instead we’ll have to dive into the actual data itself.

    A quick way to examine the usage of specific fields without any custom tools or solutions is to use the built-in charts feature of Dynamics CRM. Let’s say we want to see if our users have actually entered data into the “No. of Exployees” field on the account form. By moving to a suitable view like “Active Accounts” (with a suitable filter to remain under the Aggregate Query Limit in terms of number of records), expanding the chart pane on the right side and clicking on the plus icon, we can start to define a new chart to help us in our ad-hoc data analysis needs. For the series we should choose a field that is populated for all of the records (I always use the record GUID field, meaning for the account entity I’d choose the “Account” field). In the category section we’ll then select the field on which we want to analyze the distribution of the data. While we can’t show exact percentages in the Dynamics CRM charts, the good ol’ pie chart visualization will quickly tell us the rough share of records with a “(blank)” value.

    CRM_spring_cleaning_1

    We don’t even need to save our charts to perform the analysis, since in many cases the live preview in the chart editor mode will already tell us how big a piece of the pie goes to blank values. By leaving our mouse cursor in the Category picklist and pressing the up/down arrows we can quickly scroll through different fields and view the distribution of values.

    While this works for a reasonable amount of fields, it doesn’t necessarily produce a very good overview of the level of entropy in the CRM organization unless you write down these statistics manually onto an Excel sheet. To increase our performance in this task we can again look for a community provided tool to help us out.

    Scanning Your Entities for Unused Fields

    Paul Way has created a solution that fits the bill perfectly: CRM Data Detective. By uploading this solution into our CRM organization and simply navigating to [YourCRMorg]/WebResources/way_/detective/detective.htm we can choose any entity in the system and have its database contents analyzed by the Detective. The end result will be a list you can quickly scroll through and view the bar chart for the population rate per each attribute:

    CRM_spring_cleaning_3_small

    This will be a great tool for you in the discussions with business decision makers who’ve originally demanded the fields to be added into the CRM data model. If you’ve got fields on an entity that have a 2% utilization rate, chances are your system would become more valuable by removing such fields. The overall usability of your CRM environment would increase and you also wouldn’t need to suffer from the illusion of having certain data available, just because someone had once created a place for it in the CRM data model.

  • Power User Tips for CRM 2013 Navigation

    Power User Tips for CRM 2013 Navigation

    Multitasking isn’t necessarily the most efficient working method for us humans with only a very limited capacity for concurrent threads in our CPU. The reality however is that the days of an information worker are filled with a never ending dance of switching between apps and windows. With large Full-HD monitors (and soon 40 inch 4K screens) it would simply be a waste of space not to have several applications, documents or web pages open simultaneously, to make it easier to combine information from different sources to get our jobs done.

    CRM 2013 has been redesigned for a single window UI paradigm that kills the need for most popup windows while working in the end user areas of the application. This works great when searching for information related to a particular account, opportunity etc. but there are situations when you need to work with the data in more detail, to compare the contents of multiple records, for example. At times like these you can find yourself wishing you had those multiple CRM windows you could switch between.

    Instead of having to manually open several different sessions of CRM in your browser, you can leverage the built-in navigation paths for popping records open in a new window. In a list view you can right-click on a record to reveal the menu that offers this feature:

    CRM2013_power_user_navigation_1

    If you’ve already clicked open the record you want to continue working with while navigating onto a different part of the application, you’ll find an icon in the top right corner of the form that will allow you to pop the current record open onto a new browser window:

    CRM2013_power_user_navigation_2

    Great, so there are ways to have the individual records open simultaneously. Now, as a person who mainly works with CRM system customization and configuration instead of the data, I often find myself wishing to have two different parts of the application open at any given time: the end user records and the solution management interface. This way I can more easily pinpoint the views, fields, form components etc. from the end user UI that I want to manipulate in the customization UI. Ever since CRM 2013 arrived it has therefore become a routine for me to open two copies of the CRM organization in separate browser tabs, usually by copy-pasting the URL from the first tab onto a brand new one and hitting enter.

    When working with CRM Online organizations I noticed that if you access CRM via the Office 365 Admin portal as a system administrator, you’re by default taken to the CRM Settings area instead of your home page as defined in the Default Pane and Default Tab of your personal settings. The reason is that the URL gets appended with a few additional parameters and ends up looking like this: https://orgname.crm4.dynamics.com/main.aspx?Origin=Portal&page=Settings&area=nav_administration. While I almost never want to go to that Administration page directly, it did give me an idea for a little productivity tweak that I can use for shaving off a few clicks from my average working day.

    As we can see from the URL, there are parameters for variables called “page” and “area”. The last one looks like a sitemap subarea ID (you can review these via several config tools, such as the Sitemap Editor found in XrmToolbox), so the first one must be the sitemap area ID then. Hmm, I wonder if I changed the link to point to the Solutions subarea ID instead, would that take me to the list of solutions that I so frequently need to access? Let’s try https://orgname.crm4.dynamics.com/main.aspx?Origin=Portal&page=Settings&area=nav_solution and see what happens:

    CRM2013_power_user_navigation_3

    Yup, that’s exactly where we land. Now, if only there was a way to make this a generic link that I could apply in any of the zillion CRM organizations that I need to work with… Hey, wait a minute! That’s precisely what I did just a while ago with the global Advanced Find button! All I need to do now is to apply the awesome script from Sonoma Partners’ Blake Scarlavai and create a Javascript bookmark that will take me to the Solutions menu instead of Advanced Find. As we’ve already cracked the URL code, we can now change the part between the last quotation marks to append the CRM URL with our destination of choice:

    javascript:window.open($('#crmContentPanel iframe:not([style*=\"visibility: hidden\"])')[0].contentWindow.Xrm.Page.context.getClientUrl() + "/main.aspx?Origin=Portal&page=Settings&area=nav_solution");

    While we’re at it, let’s also go and build another URL that takes us to the accounts view, which is a fairly safe bet to have as the “get out of the admin land” navigation link (although not every org may have it in the sitemap). Following the same logic as above, our Javascript bookmark contents will be:

    javascript:window.open($('#crmContentPanel iframe:not([style*=\"visibility: hidden\"])')[0].contentWindow.Xrm.Page.context.getClientUrl() + "/main.aspx?Origin=Portal&page=SFA&area=nav_accts");

    Once we paste the scripts into the URL fields of bookmarks on our browser and add them to the toolbar, there’s now a powerful set of quick access buttons to take us to the frequently visited areas of the CRM application in any CRM 2013 organization that we have currently open in the active browser tab.

    CRM2013_power_user_navigation_4

    If you’re not working within the customization area of CRM that much but would rather just have a faster way to switch between different areas and entity lists than what the touch optimized Navigation Bar of CRM 2013 enables, I suggest you take a look at a brand new solution from MVP Scott Durow (of Ribbon Workbench fame) called Start Menu for Microsoft Dynamics CRM 2013. Instead of organization agnostic Javascript bookmarks in a browser, the solution from Scott takes the CRM 2013 Command Bar to where no ribbon has gone before and introduces a true power user menu for accessing any part of the CRM application from (almost) anywhere, by rendering the sitemap contents as a dropdown menu available on all Command Bar enabled entities. Here it is in action:

    CRM2013_StartMenu

    Last but not least, if you have any thoughts on how the CRM 2013 navigation options should be developed further in upcoming releases, be sure to review these links to feature suggestions on Microsoft Connect and cast your vote for the ones that you feel would help your organization’s users to be more productive when working with Dynamics CRM. Thank you.

  • Information Overload: Cleaning Up CRM 2013 Forms

    Today I was working on upgrading the customizations of a CRM 2011 org to CRM 2013 forms and restructuring the layouts to fit the new UI. This environment had a custom entity called “Travel Information”, which was used for storing details related to event travel for employees. Here’s what the form looked like when opening a test record:

    CRM_2013_Form_Information_1

    Hmm, that’s three times the word “information” on the first few lines of the form. With further form sections for “Hotel information”, “Rental car information” etc. it seemed like there’s hardly any room for the actual information among all these labels claiming to be it. So, I decided to clean things up a bit.

    Form Tab Label

    When you create a new custom entity, you’ll get the first tab added on the form by default with the name “General” and quite often it remains the place where the commonly used and business required fields of the entity will get presented. It may be hard to come up with a very descriptive name for such a collection of fields, as was the case here with the “Information” label given to it.

    The form tabs can be used for expanding and collapsing the tabs to show/hide fields, but most of the times it will be unlikely that you’d want the first tab ever to be collapsed on the form. So why do we need the label there in the first place? Let’s navigate into the form customization UI and hide it.

    CRM_2013_Form_Information_2

    By clearing the checkbox for “show the label of this tab on the Form” we can clean up unnecessary text away from the form and help the users focus on the actual field contents instead.

    Form Name

    In situations where there are more than one form for an entity (and the user has access to them), it’s necessary to show the form selector control at the top of the form. But in our example, there is only a single main form for this entity, so why does the form name “Information” still show up there?

    CRM_2013_Form_Information_3

    With the default entities of CRM 2013 there has been a new naming convention introduced to distinguish between the legacy forms from CRM 2011 and the updated entity forms with the new layout and components. For example, the account entity will have a legacy form called “Information” and a new form called “Account”. If the user only has access to the latter one, then the name of the form will actually not be displayed there. Instead you’ll only see the name of the entity, thus avoiding unnecessary repetition like “Account: Account”.

    How could we achieve the same outcome with a custom entity? Simple: we’ll just have to do what the Dynamics CRM product team has done with their default entities and name the form exactly the same way as the entity. In this example, by updating the Form Name attribute found on the Form Properties dialog from “Information” to “Travel Information”, this same behavior should kick in when CRM loads up our custom entity form.

    CRM_2013_Form_Information_4

    Yup, no more form names displaued on the form. As we can see from the end result, we’ve now managed to remove redundant labels from the form quite nicely, leaving only the entity name visible above the primary name field of the entity.

    CRM_2013_Form_Information_5

  • How Would You Change the Dynamics CRM Navigation?

    How Would You Change the Dynamics CRM Navigation?

    CRM 2013 introduced the first big change in the navigation logic of Dynamics CRM since version 3.0 in 2005. We went from a hierarchical, popup window driven UI with many ERP-ish menus to a more modern experience of a single window app with touch optimized navigation bars and a reduced number of menu options visible to the user at any given time. Hopefully many of you have already had the chance to try out the new flow UI, in a CRM Online trial instance, for example.

    Dynamics_CRM_menu_sales

    When big changes are introduced to the user interface of an application, it always takes a while for the existing users familiar with the previous interface to get adjusted to the new ways to perform the same underlying actions in the application. There was a very interesting piece published a while ago where a UX designer having worked with the Windows 8 Modern UI (formerly known as Metro) shared his opinions on the impact to the users and one possible rationale behind Microsoft’s decisions on revamping the world’s most popular OS:

    “Familiarity will always trump good design. Even if something is vastly better, if it is unfamiliar it will be worse. That’s why people act like a unicorn was murdered every time Facebook releases a new redesign. The Windows 7 start menu IS better because it is familiar. We’ve used that design paradigm for the last 20 years. Metro is going to take some getting used to.”

    Just like Windows 8’s new UI probably wasn’t perfect in the initial release, there are some areas in the CRM 2013 navigation features that might work better with a little fine-tuning and enhancements to the functionality. For example, one feature that I’ve always promoted to the CRM Outlook client users is leveraging the favorite folders (Shortcuts in newer versions unless you’ve disabled the solutions module in Outlook). No amount of role tailoring can replace the convenience of allowing users to select exactly the 5 menus that they most frequently require during the day. Wouldn’t it be awesome if there would be a similar feature available in the more modern web client UI of Dynamics CRM 2013? Something a bit like this:

    Dynamics_CRM_menu_favorites_small

    “Cool! I want it, how can I get it?” Easy: all you need to do is sign in at Microsoft Connect with your Microsoft Account (what used to be Windows Live ID), navigate to the Dynamics CRM Suggestions site and vote for the feature suggestion on having a Personal Navigation Bar.

    Will this guarantee that the feature will be included in the next Dynamics CRM version? Of course not. Will it make any difference to vote on the items on Connect then? Yes, it will. While only a fraction of the feature suggestions posted on Connect can ever get the chance to become a release item in the actual product, the suggestions that gain more than a couple of upvotes will most certainly have a far higher likelihood of being raised up onto the list that the Dynamics CRM product team will use when evaluating the priority of possible future features.

    Microsoft_ConnectWhile you’re logged in, don’t forget to use the search feature on the site to look up other suggestions that touch areas of the product which you’ve thought to be in need of minor adjustments or features that are currently lacking from Dynamics CRM. Since we’re discussing the new navigation in CRM 2013, here’s a few items I’d recommend you to take a look at and vote for, if you consider them to add value into the Dynamics CRM product for a significant enough share of customers:

    Well, for the last one there’s actually a nice workaround you can apply already today. Still, since the vast majority of users will never now about these power users tips and an unfortunately large share of CRM organizations will likely not have the top Navigation Bar items nor Command Bar items customized due to the system admin’s lack of knowledge on great free tools available for Dynamics CRM customizers, the importance of the default settings and out-of-the-box functionality of a software product like Dynamics CRM cannot be overemphasized.

    If you’ve got any CRM 2013 navigation related ideas that you’d like to see implemented in the next release, then please do the following: 1) perform a search on MS Connect to see if anyone else has already logged in the suggestion, 2) if not, create a new suggestion describing the “what”,”why” and “to whom” behind your idea, then 3) leave a comment on this blog post with a link to the suggestion, so others interested in the topic of improving the CRM user experience can also easily find them and vote them up on the list.

  • Finding Advanced Find in CRM 2013

    The user interface of Dynamics CRM has been cleaned up quite a bit in the latest 2013 version. The number of buttons visible to the user has been greatly reduced in the browser client. Another significant change from a usability perspective is that Dynamics CRM now operates like any other web application or website: within a single browser window, allowing you to navigate back & forth with the browser’s native buttons. The combination of these two factors has however lead to one side affect that may cause the users familiar with previous Dynamics CRM versions to ask the question: “Dude, where’s my Advanced Find?”

    In CRM 2011 the Advanced Find was always available in the main window of CRM. Unless you resized the window to a small enough size and made the Data tab of the CRM 2011 Ribbon collapse into a single flyout button, it was pretty easy to spot the familiar binoculars icon that represented Advanced Find. Being one of the most powerful features of the Dynamics CRM application, this button will have surely become familiar to all power users of CRM over the years.

    CRM_2011_Advanced_Find

    In CRM 2013 the Advanced Find feature is not always so easy to locate. I have observed quite many experienced users to struggle with locating the menu after the system has been upgraded. Also, when I was recently studying the Google search terms that had lead people to visit my blog, “CRM 2013 Advanced Find” and its variations appeared three times in the Top 20 searches. Since the Advanced Find feature itself has not really changed at all in the 2013 version compared to previous releases, I presume many of the questions people have in their mind while reaching out to a search engine may be related simply to “how to find Advanced Find” (as “meta” as that may sound).

    If that’s the question you have, then let me first explain a bit about the logic behind the standard behavior of the new Dynamics CRM 2013 UI in different areas of the application. Then I’ll show you an alternative method that will make it much easier to launch Advanced Find from any place inside CRM.

    Standard Navigation Experience

    When you open up the Dynamics CRM 2013 browser client with the default settings of a fresh new CRM organization, you’ll be taken onto the dashboard page. Here the button for opening Advanced Find is displayed prominently as one of the actions on the Command Bar, just like it would have in CRM 2011.

    CRM_2013_Advanced_Find_1

    If we move forward to a list view of any entity, the Advanced Find button no longer appears directly on the page. Instead the user needs to click the ellipsis (three dots) to reveal the “more actions” menu, where one of the actions launches Advanced Find into a new popup window. Another alternative would be to expand the view selector menu and choose the last option of “Create Personal View”, which will also lead the user to the Advanced Find window.

    CRM_2013_Advanced_Find_2

    How about if we’ve navigated onto a record of an entity, such as a contact, and then realize we want to perform a search on other similar records? If we now repeat the same action of expanding the Command Bar menu via the ellipsis, there is no longer an option launch Advanced Find from here. Instead we’d need to go back in our steps to the Contact list view by clicking the label in the Navigation Bar. This would then land us on a window where the option is again available.

    CRM_2013_Advanced_Find_3

    In a way this behavior makes sense, since the Command Bar actions visible on the record detail page are all related to the single record in question. Advanced Find also isn’t considered a “global” action in CRM that would be always present in the Navigation Bar (like the gear icon for opening the personal options menu), but rather it only makes its appearance when looking at a view of records (with the dashboard page being an exception to this rule). As Advanced Find really is a tool for building views, it is shown within this context of existing views for any record type.

    Creating a Shortcut Button for Advanced Find

    If you need to frequently work with views in Dynamics CRM, to perform searches on records, study different data columns than the system views offer or perform data analysis of any kind, you might find yourself reaching out for Advanced Find quite often. Instead of having to first perform a check on what is the current page’s context and then determining the steps needed for launching Advanced Find, wouldn’t it be more convenient to just have a persistent button available that would always take you to that window?

    Although Dynamics CRM itself doesn’t offer a direct way to bookmark the Advanced Find page, you can still easily grab its URL. In Internet Explorer, once you’ve opened up Advanced Find, press Ctrl+N to open it in a new window that contains the full browser controls. Now you can add it as a bookmark and place it on the Favorites bar (right-click on the top of the IE window to enable the bar if it’s not visible). The URL will be in the form of http://[servername]/[organizationname]/main.aspx?pagetype=advancedfind in an on-premises Dynamics CRM environment.

    CRM_2013_Advanced_Find_4

    Wait, don’t leave just yet! There’s more to it! The URL will be a static link that points to your current CRM organization. If you ever need to work with more than one CRM environment (such as development, test, production instances), then that bookmark will not be of any help in the other organizations. Wouldn’t it be cool to have a context sensitive button that would always take you to the Advanced Find window of the CRM environment you’re currently accessing? (more…)

  • Expanding “Add Activity” Options on CRM 2013 Forms

    CRM 2013 has introduced many UI features that aim to reduce the number of different windows between which the user needs to navigate while performing everyday actions on records. Since customer relationship management systems are often focused on capturing the various interactions between the company and its customers, activity management is naturally a core feature that should be as smooth as possible in a CRM application.

    The refreshed entity forms in CRM 2013 contain the Social Pane (shown as “Notes Control” in the form customization UI due to legacy reasons) that shows three tabs of interaction data related to the record: Activity Feed posts (Yammer posts if available), activities and notes/attachments. In addition to a much richer rendering of the activity content than the previously available subgrids, there’s also an inline control available for adding tasks or phone calls directly on the main entity’s form. This provides quite a slick user experience that makes CRM appear very effortless to use for activity management.

    CRM2013_Activities_1

    What’s missing from the Social Pane then? Well, for starters, not all the activity types are available to be created via the Add buttons on the top of the control. We have phone calls & tasks available immediately, clicking the ellipses (…) button gives us email & appointment, and if we’ve added any custom entities into our solutions they’ll be presented here, too. However, if you’d want to add any of the other default activities for the record you’re working on, meaning a letter, fax, recurring appointment or a service activity, then you’re out of luck. The user would need to navigate away from the form by selecting the Activities menu from the Nav Bar, create a new activity record from there, find the Regarding record to reference on the activity, save it, then return back to the original record.

    Another limitation has to do with the inline editing experience of tasks and phone calls. When you create a phone call via the Social Pane, it will always be record as a completed activity. So, no chance for planning upcoming phone calls and setting up a reminder, unless you record it as a task instead. Another downside of the inline form is that it’s not customizable, which means we can’t display any custom category fields related to a phone call or task. When implementing a CRM system for tracking the activities of sales people and account managers, it is a very common requirement to have some compulsory fields added onto the activity entities that the user must fill to categorize and describe the activity before being able to complete it. Well, since the inline form will log a completed phone call right after clicking on OK, this isn’t exactly the optimal feature for those scenarios.

    Ribbon to the rescue

    While some parts of the new UI are not yet customizable in CRM 2013, we do still have a way to introduce additional features onto the entity forms via the Rib… sorry, Command Bar. Even though in its default setup the Command Bar looks like a stripped down version of the CRM 2011 Ribbon, it’s still built on the very same  Ribbon XML definitions and it supports most of the features from its previous incarnation. As we know, CRM in itself doesn’t provide tools for configuring the contents of the Ribbon, which is why someone just had to do something about it. That “someone” is CRM MVP Scott Durow and the “thing” is his awesome Ribbon Workbench solution that gives us everything imaginable for customizing the CRM 2011 Ribbons as well as the CRM 2013 Command Bar.

    Since many of the common features presented on the CRM 2011 Ribbon get hidden away once the CRM environment is upgraded to 2013, Scott has been covering several scenarios in his blog where this functionality is restored onto the Command Bar. Among these articles is a tutorial on how to restore the Add Activity buttons into a CRM 2013 environment. By following these steps documented by Scott we can enable the creation of letter activities while on an entity form, as well as provide a navigation path to opening the full form of a phone call activity to control the business required fields as well as activity status beyond the options that the Social Pane inline activity form gives us.

    To demonstrate the possibilities of modifying the default activity management features of CRM 2013, I decided to take Scott’s example and expand it a bit further. In his blog post Scott shows you how to make the activity buttons appear on the Command Bar, but due to the limitation of max 5 items being shown directly on the form and the rest being pushed away into the “more actions” menu, it’s not going to be very easy for the CRM user to discover their existence. What I did instead was add a new flyout menu, promote it to the top 5 items on the Command Bar and arrange all the “Add Activity” buttons inside it. The screenshot below shows how this has been configured while in the Ribbon Workbench UI:

    CRM2013_Activities_RibbonWorkbench

    How do we get the buttons to do what we want them to do, meaning creating new activity records like they used to in CRM 2011? Scott’s blog post contains all the details you need for making this happen, but since the inherent complexity of the Ribbon XML language can make it challenging to grasp how the various options relate to one another (I’ll be the first to admit I struggled quite a while with the task before being able to achieve the result I wanted), I’ll recap the main steps here for your convenience.

    First of all, we’re not creating a completely new command but rather customizing a native CRM platform command. While the activity buttons aren’t visible on the Command Bar by default, they do exist in the Ribbon definition and can be accessed in the Ribbon Workbench by switching from the Command Bar tab to the Ribbon tab (bottom left corner of the top menu) and navigating to the Form ribbon (since this is where we want the flyout menu to appear in our example). You’ll see the familiar Ribbon in the format that it would be shown, with the Activity buttons available under the Add tab. Yeah, not too many end users probably ever discovered that second tab of the ribbon on their own, which is why the simplified design of CRM 2013 is definitely a step in the right direction, even if it means us consultants need to do a bit more tweaking of the system to enable the relevant features.

    CRM2013_Activities_RibbonWorkbench_2

    Anyway, now that we’ve found the buttons, we can right-click on them and select “Customise Command”. Effectively what this does is it brings the commands like Mscrm.AddPhoneToPrimaryRecord available for us to reference in the custom buttons that we create. While we’re at it, we can also re-use the icons and labels from the native buttons in our custom flyout menu buttons. The one thing we need to change, however, are the Display Rule settings of the now customized commands, as the Mscrm.HideOnCommandBar rule would otherwise do just what it says and hide the buttons from our flyout menu when viewed on a refreshed UI form.

    As mentioned, please refer to the original blog post to guide you through the detailed configuration of the custom buttons. It will give you everything except the different layout, which is the flyout menu that you can see below. In practice this method allows us to create up to five traditional dropdown menus on the form’s Command Bar. We now have a button labelled “Add Activity” that will open up a list of different activity icons, which in turn will lead the user to the traditional full create form for the chosen activity type. It will pop open in a new window, allow the user to edit the details, then close the window and return back to the parent entity form. Just like in the “good ol’ times” of pre-2013 Dynamics CRM.

    CRM2013_Activities_2

    If you took a closer look at the flyout menu shown in the picture, you may have noticed one non-standard entry at the end of the list: Site Visit. What’s that? And why’s it under a menu section called “Quick Actions”? Thanks for asking, let me explain what it’s all about. (more…)

  • Similar Opportunity Analytics with CRM 2013 Quick View Forms

    A while ago when performing a requirements gathering session for the sales process functionality in a CRM implementation project, my client asked me whether Dynamics CRM was able to show information on the opportunity form about how similar opportunities had performed in the past. Thinking of an analogy from the world of consumer web apps, this would be a bit like Amazon’s feature where they show you similar items that other people had purchased after ordering the product you are currently thinking of buying.

    Similar_items

    My initial reaction to the request was “I wish we could do that, but you’re looking at either a significant chunk of custom development or a considerably more expensive piece of software to get that functionality”. After a moment of thinking about it, though, I realized that the new CRM 2013 version already had some platform functionality that could be leveraged for delivering such a feature under the right circumstances.

    Quick View Forms across multiple relationships

    Traditionally Dynamics CRM has been an application where you can show information from either the current record the user is working on or the child records directly related to it. It wasn’t until CRM 2011 that showing the related child records right on the entity form became a supported scenario. With CRM 2013 we’ve gained another important feature that we can use to expand the scope of information being shown to the user on a single form. The new Quick View Forms allow us to show several fields from the parent entity on the current entity’s form. Even better, the Quick View forms support the CRM 2011 subgrid feature, which also makes it possible to show information about the child records of the parent record on one of its other child records.

    “Whoa, that’s way more relationships that I can visualize in my head! What does all this actually mean?” No worries, these are not the type of features that would be immediately obvious to even the more seasoned CRM consultants. Let’s approach this via an example from the out-of-the-box configuration of the CRM 2013 case form. This new form contains a Quick View Form called Customer Details:

    Recent_Cases_CRM_2013

    The Quick View Form not only shows details about the customer account but also a subgrid of all the recent cases where this account has been the parent record. So, starting from the case record, we go one level up in the hierarchy to query the account record and then we come back down again to retrieve a list of child records for this account. The Recent Cases subgrid returns back to the same entity as where we start from, but this is not a requirement, as is demonstrated by another subgrid included in the same Customer Details Quick View Form that lists the recent activities regarding this account. Effectively we can show any entity information that is maximum two hops away from the current record and that share the common parent record.

    Applying Quick View Forms in customer segment analysis

    How could we leverage this feature in providing the CRM user some insights on how similar opportunities have worked out in the past? The key here is finding an entity that we can use for binding the different opportunities together and showing relevant information about them that will be helpful for the CRM user in deciding on the actions to take in pursuing the new sales opportunity. If it’s an existing customer that has done purchases in the past we could of course benefit from seeing this history, but assuming that we’re dealing with a scenario where repeat purchases are not that frequent, we should look for a different variable that could help us in surfacing the past sales analytics that can help us in winning the new deal in question.

    Let’s assume that we’ve got a customer segmentation model in place where we assign each new and existing account a segment value. The actual rules behind the segmentation process are beyond the scope of this article, but the one thing that’s critical here is that the segment information is stored in a dedicated “Segment” entity. This custom entity has a parental relationship to the account entity, which basically means that we can open a segment record and see all the accounts belonging to that segment. Now, because of the fact that each account has a value in the segment lookup field, we can also configure it so that every opportunity created for the account also inherits the segment value of that account. Effectively we’ll then have a similar 1:N relationship between the Segment and Opportunity entities as we have with Segment and Account. The end results and our target configuration will therefore look something like this:

    Account_segment_opportunity

    We need to have a bit of redundancy in our data model in order to be able to leverage the Quick View Form feature for our desired purposes. Technically we could determine the segment of the opportunity record just by examining the value on the parent account of that record, but we wouldn’t be able to reference it on the opportunity form customization UI. Therefore it is crucial that the segment value is carried over from the potential customer account onto the opportunity record, either through a relationship attribute inheritance or a real-time workflow that retrieves the value right after the opportunity record is created (preferably both, to cover all scenarios for opportunity creation). (more…)

  • Address Copy Button with CRM 2013 Business Rules and Workflows

    Address Copy Button with CRM 2013 Business Rules and Workflows

    The default forms in Dynamics CRM only contain one set of address fields, but most organizations will need to surface at least the Address 2 fields for accounts and contacts to manage the different information for visiting address, mailing address, delivery address, invoicing address or whatever the business scenario.

    Sometimes it may be justified to have a bit of redundant information in your CRM database for practical purposes. For example, if you use the Address 2 fields for managing the mailing addresses for accounts where this is separate from the visiting address, it may be easier to have the mailing address fields populated also in scenarios where the values are identical to the visiting address. Otherwise the marketing assistant who is building target groups for mailing campaigns will need to perform some Excel sorcery to pick different address fields for different customers when extracting the data from CRM.

    If you’ve bought anything from online stores during the past 10 years, you’ve probably ran into a nice little feature on the checkout or registration forms where the system asks if you’d like to use the address information you entered into your customer profile also as the shipping address for the order. Often times this is presented as a checkbox field that you simply need to tick once, to save you the trouble of re-entering the same data the system already knows.

    Wouldn’t this be a nice feature to have also on the CRM account form? Let’s take a look at a form where both Address 1 and Address 2 fields are presented side-by-side. If we would have a “Copy to Address 2?” checkbox that the user could tick after having tabbed through the Address 1 fields and entering data into them, that would be quite an intuitive feature that the users would surely feel right at home with. On the account form it could look like this:

    CRM_2013_address_copy_account_1

    Now that we have our new custom field below the Address 1 fields, next we need to build the functionality for duplicating the field values from Address 1 to Address 2. So, please open you “Javascript for Dummies” textbook from page 47 and… Hey, wait a minute! We’re working with CRM 2013 now that has the great new Business Rules feature for situations like these! Forget what I said about scripts, instead go ahead to the account entity customization menus and add a new Business Rule for this form.

    On the “Copy Address 1 to Address 2” Business Rule we’ll set a single condition to monitor the value of our custom chechbox field. If the box is ticked, meaning the field value equals “Yes”, we’ll set the values of each visible Address 2 field on the form to be the same as what’s been entered into the corresponding Address 1 field.

    CRM_2013_address_copy_business_rule

    Once we publish our customizations and activate the Business Rule, we can try out the feature in practice. Let’s create a brand new account record to simulate the typical data entry process (although an existing account would work just as well). After we’ve entered the Address 1 information on the left column, the moment we tick on the “Copy to Address 2?” box we’ll see the address fields on the right side get populated with the same values in real time.

    CRM_2013_address_copy_account_2

    Great, we’re all set to move this into production now! Or are we actually? What happens when the user wants to go and edit the field values for Address 2? If we leave the “Copy to Address 2” box ticked, then our Business Rule will keep copying the values over to the Address 2 fields the next time the rule is evaluated. As we’d like to allow the user to leverage this copy feature to initially replicate the fields to Address 2 but perform the necessary changes to those values that are in fact different, such as editing the Street 2 field, we should somehow restrict when our field copy operation is triggered. (more…)

  • Getting Your Head Around Dynamics CRM 2013 Processes – Part 2

    In the first part of this series we looked at the two new process categories introduced in Dynamics CRM 2013: Business Process Flows and Actions. Now it’s time to dig deeper into new CRM 2013 functionality that will allow you to achieve process automation results in areas where custom code was previously required.

    Business Rules: Processes In Disguise

    You may have already heard about the new feature in CRM 2013 that promises to free us from writing Javascript to manipulate form fields, called Business Rules. If you’re looking to find them from under the Process Center, though, you’re in the wrong place. Business Rules are a property of the entity and you’ll see them alongside other such components like Charts and Views in the Solution explorer. From this we can already gather that it won’t be possible to move Business Rules across different CRM organizations as individual components like you can do with processes, instead they always travel with their parent entity in the solution files.

    CRM_2013_Business_Rule

    Business Rules have the nickname of Portable Business Logic (PBL), so there must be something else that makes them particularly easy to carry around then? The portability actually refers to the way in which the rules can be applied to all the different forms of the entity and also to how they will be carried over to the mobile client application (MoCA) on Windows 8 and iOS tablets. They are however form specific in the sense that you must define what the scope of the Business Rule is: either tied to a particular form of the entity or simply set to run on “all forms”.

    What can you use Business Rules for from a process automation perspective? Similar to the Business Process Flow (BPF) process type, Business Rules can be used for guiding the data entry and update tasks by dynamically changing the UI presented to the user, based on the values of other fields on the form. Typically CRM entities end up having far more fields available than what a user is really expected to fill or even view in a particular stage of a business process. Whereas the Business Process Flow can only touch the Process Control shown on the top of the entity form, Business Rules can manipulate any field on the form, setting it either as visible/not visible, required/not required and disabled/enabled. They also have the ability of presenting field specific error messages if a user tries to deviate from the intended process.

    Business Rules have a similar type of conditional statement setting as workflow processes do (if/then), but it is quite a lot more limited currently than the workflow editor options. For instance, you can only reference fields from the same entity you’re working on, so setting the requirement level of a contact form field based on the parent account record’s values won’t work. You are also limited to only specifying a single set of conditions that must all be true for the action to run. In order to build an “or” rule to cover multiple alternative conditions you’ll need to save your first Business Rule, then create a copy of it with Save As and have as many concurrent rules as there are options in your “or” statement.

    Unlike the Business Process Flow processes that are only able to present fields from the entity, Business Rules can actually update the record as well. The “Set field value” action allows you to input either a static value, copy the value of another field (on the same record) or perform a simple +/-/* calculation with two fields. For an in-depth list of Business Rule capabilities and considerations, look no further than this excellent article by Jesper Osgaard on Understanding Portable Business Logic.

    This first release of Business Rules for Dynamics CRM 2013 addresses many of the common scenarios where Javascript has previously been applied on entity forms to make them dynamically adapt to the business logic of an organization. However, there remain some frequently requested features that will still require form scripts to be developed, such as:

    • Create dependent optionset fields (filtering available values based on another field)
    • Set dynamic default values (“task deadline today+3 days”)
    • Show/hide form components other than fields (tabs, sections, subgrids, iFrames, Quick View Forms etc.)

    Based on the fact that Business Process Flows are categorized as a process record in CRM 2o13 whereas Business Rules are “only” a component of an entity, should you spend more time designing the Business Process Flow and resort to Business Rules only when you need to tweak some details on the forms? I personally don’t think that the BPF Process Control is necessarily the only right way for implementing guided processes in CRM 2013. For a transactional record with a linear process consisting of several stages with clear boundaries (the sales opportunity scenario) it is surely a natural fit, but in many situations the flexibility provided by the field level configuration of Business Rules can prove to be a more practical approach. At least ask yourself these question before committing to a BPF based design: 1) does it offer some required functionality that Business Rules could not replicate, and 2) can the process data naturally fit into the stages that the Process Control will display?

    Real-Time Workflows: Plug-ins For The Analysts

    For the past 10 years the Dynamics CRM workflows have been tirelessly performed their tasks behind the scenes, driven by the time slots that the asynchronous service on the CRM server has kindly allocated for them. Originally designed for executing workloads that didn’t have a need to present the results immediately to the same end user who triggered the event, they’ve since been frequently leveraged also in process automation tasks that would have performed much more smoothly with a synchronous execution (also known as “poor man’s plug-ins”). The powerful process automation capabilities presented in the workflow editor would have often been enough to meet the business logic customization requirements, had it not been for that delay in the logic’s execution that demanded the same logic to be replicated in custom code instead.

    In CRM 2013 workflows have now been promoted to a 1st class citizen status by adding one tiny switch: “Run this workflow in the background [yes/no]”.

    CRM_2013_Real-Time_Workflow

    Why is this option of running workflows synchronously so important then? Well, if you’re just using your workflow to send an email notification to someone, there’s precious little difference in whether the action takes place immediately or after one minute. However, if you are updating the current record that the user is currently viewing through the entity form, the fact that you can present the changes right away opens up a whole new world of opportunities for leveraging workflows to guide the business process.

    Nowadays when the new CRM 2013 entity form design leans towards a dashboard style of summary views presenting a number of subgrids of child entities, activities or activity feed posts, the need for immediate feedback on the UI applies also to the creation of related records through workflows. If your business process relies on the assignment of tasks to users rather than the “mark completed” checkbox driven style introduced by the new Business Process Flows, the fact that the user will see the process automation in action as he updates the records in CRM will surely help to build confidence in the system’s ability to manage the business process and distribute information to all relevant parties, without the need for manual emails or phone calls to coordinate the work.

    From a development perspective, Real-Time Workflows have a similar but likely far more significant impact on the division of labor between the business analyst and the .NET developer than the new CRM 2013 Action processes that we covered in part 1. Synchronous workflow processes can cover many of the common CRM customization scenarios that would have previously required developing a plug-in. While a custom plug-in will naturally still remain far more flexible in terms of its ability to query and manipulate data, the Real-Time Workflows will drive more and more custom code to be developed as Custom Workflow Activities rather than plug-ins.

    This is because of the fact that if you can isolate your code into a component that the business analyst can call from a standard workflow process, the configurability of the business process automation functionality will be greatly enhanced as future adjustments to the process can be performed through the CRM UI without touching any code. The development of re-usable components that extend the default capabilities of workflows also lowers the barrier of applying the same custom logic into new processes as the needs of the customer organization evolve.

    The less people it takes to solve a business problem through CRM and the shorter the lead time from identifying the problem to deploying the solution is, the more likely it is for the problem to get solved. This is the main reason why increasing the share of configuration tasks over development tasks is so critical for any business information system that needs to adapt to changing business processes and not just fulfill a static set of requirements. If you’ve worked with CRM systems beyond their initial implementation projects, you’ll surely know into which category these systems fall into.

    The Growing Business Process Automation Toolkit

    If we compare the old and the new world of process automation in Dynamics CRM, we can see that the tools available for no-code configuration of business process management functionality have grown considerably over the past few years:

    • CRM 4.0: workflows
    • CRM 2011: workflows, dialogs
    • CRM 2013: asynchronous workflows, real-time workflows, dialogs, business process flows, business rules, actions

    What this means from a system administrator, customizer or business analyst perspective is that if you haven’t yet started to take advantage of the process automation capabilities of Dynamics CRM, you’re really missing out on a significant share of the platform’s potential value to your business. At the same time the growing number of options in CRM can make it seem like an increasingly difficult topic to approach. How do you know which one of the six tools to pick for building a solution to a business problem you’ve identified?

    As discussed in part 1 of this article, Business Process Flows are essentially just a map of the process that you present to the end user, but they don’t perform any actions on the data on their own. Since the Action processes are currently only valid for scenarios that involve a developer resource, we can also leave those our when exploring the right tools of how to get started with CRM process automation. That leaves us with four tools to evaluate for their fit to get the job done. I’ve compiled some of the main characteristics of each of them into the following table to help you in the selection process:

    CRM_2013_Process_Automation_small

    You should pay attention to the following constraints of each tool when analyzing their fit for the task at hand:

    • Business Rules are the only way to perform actions right after the user updates a field. Workflows will not fire until the save event (which can be 30 seconds away in the new auto-save CRM 2013 organizations).
    • Workflows will run even when the records are created or updated through other means than the form (data import, integrated systems). Business Rules are only executed on the form.
    • Due to the aforementioned limitation, Business Rules also only ever apply to a single record at a time.
    • Workflows can reference data from related entities for read/update. Business Rules can only work with data available directly on the form.
    • The special capability of Business Rules includes manipulating the UI (hide/show fields, set requirement level, show alerts). Workflows only deal with the data.
    • Dialogs are a manually initiated subset of workflow functionality with a specific Wizard style UI. They also have one special skill: querying data from any entity, not just the directly related ones.

    I hope that this article has managed to highlight the new features in Microsoft Dynamics CRM 2013 that can help you build solutions for guiding the user through a business process and automate the related tasks. There is a lot to explore in the latest CRM release in this area and I’m sure we’ll discover many creative ways for applying these new tools in practice as more and more customers move onto the CRM 2013 / Fall ’13 platform.