Don’t Merge Your Forms in CRM 2013

0 comments

Posted on 12th October 2014 by Jukka Niiranen in Features

, , , , , , ,

If you have been using Dynamics CRM before the 2013 version was released, you may have something in your system called “information forms”. This is not a very descriptive term for them, since of course all the entity forms are about presenting “information” to the end user. These forms actually date back to a time in the Dynamics CRM platform history when there was only a single form available per entity. Times have changed quite a lot since then, as entities can now have role based forms, mobile forms, quick create forms and quick view forms.

Although not a specific form type in itself, CRM 2013 introduced a whole new layout for the default entity forms as a part of the UI refresh. Instead of the traditional & boring two column layout, the new CRM 2013 forms are made up of three columns that can consist of not just entity fields but also related entity subgrids, the social pane, Bing Maps component and other exciting new features. Whereas the old default forms were called “Information”, the names of these new forms follow the entity names. So, the account entity will have a new form labelled “Account”, as an example. (By the way: check this tip for optimizing your form naming convention.)

Merge Forms Feature

Since the new forms are designed to make better use of the new navigation paradigm of CRM 2013 as well as present the data in a much richer way than the old “ERP style” forms of past CRM versions, customers who are upgrading their Dynamics CRM deployment to the latest version are advised to migrate into using these new forms. In fact, Microsoft has stated that the next major version (CRM 2015) would no longer support the use of the old “information forms”.

To make this transition easier, Microsoft has provided a feature called “Merge Forms”. This new button available on the form editor in the CRM customization UI (which still utilizes the old CRM 2011 style layout even in CRM 2015, by the way) is intended to be used for bringing the tabs, sections and fields from your old forms onto the new forms with as little clicks as possible.

CRM_merge_forms

The process is described in the article “Update your forms to Microsoft Dynamics CRM 2013 or Microsoft Dynamics CRM Online Fall ’13”. Even more detailed steps can be found from the PDF document “How to Prepare for the CRM Online Fall ’13 Service Update”. Basically what the feature does is bring in the contents of the old form to the end of the currently open form, with the intention of making it faster to rearrange your customized fields and sections to align with the new default form’s content and layout.

Sounds like a handy feature, right? There’s only one slight problem with it: it doesn’t work.

Conflicting ID Values

“What do you mean it doesn’t work? I have used the button to bring in my custom fields and it did just what I expected.” Well, maybe I should rather say that it works partially. If you never export your CRM customizations into a solution file and move it to a different environment, you may not notice that anything is wrong with your forms. However, if you do want to move the customizations between development, test and production organizations, you might run into the below error message during the solution import process.

CRM_import_solution_error_after_form_merge

After the error, if you download the log file and open it, you’ll see a message like this:

Error code 0x8004F658. The label ‘E-mail 2′, id: ’87dc7c9c-94c1-3953-e490-11413b31d0ad’ already exists. Supply unique labelid values.

What the system is telling us is that we’re trying to insert an item into the customization metadata that has a non-unique ID. Depending on the scenario, the item could be a field or section label. But how did the ID end up being a duplicate? After all, we don’t assign these GUID values in the customization UI, rather the CRM platform generates them. What could have caused the system to violate its own rules?

The answer can be found from this thread on the MSDN forums: CRM 2013 Solution Import. A Microsoft support engineer has confirmed that the error is caused by a design mistake in the Merge Forms feature. Apparently in the process of merging form content from the old form onto the new one there is more data carried over than is needed. Not only do you get the form components exactly the way they are configured in the original form, but you also get the same ID’s. Now, since the old form also exists in the system, this will cause an error message when you try to import your solution file from the source system to the target environment, like from development to test environment, for example.

The Workaround

The system where I ran into this problem was running Dynamics CRM 2013 Service Pack 1 (6.1.0.581) with no Update Rollups (see this earlier blog post for help on understanding the different updates and version numbering). The forum thread above does not indicate that a hotfix for the form merge bug would have been included in one of the released updates so far, so I’m assuming that all CRM 2013 environments are affected by it during the time of writing.

The suggested workaround in the forum discussion was basically “start all over”, meaning removing the merged content from the form and re-adding the components back there one by one. In the environment I was working on this would have required many hours of work with using the form editor on a number of entities , which I wasn’t too keen on spending there. I had just migrated a copy of the CRM 2011 production organization database onto a CRM 2013 test server and was in the process of testing the upgrade steps before the final go-live, so re-doing the customizations at this stage just sounded like both a schedule challenge as well as a potential source for new issues.

I extracted the CRM solution zip file and poked around the customization.xml file for a while, trying to think of a way out of this situation. After I realized that trying to edit the XML manually would only land me into a deeper hole, it occurred to me that there was another feature in CRM that performed something similar than the broken Merge Forms: the “Save As” button. Copying entity forms to create new variations was something that I had used many times with no issues, so perhaps I could rely on it here as well?

I proceeded with creating a copy of each of the entity forms where I had used the Merge Forms feature. Since the new form versions created via “Save As” are able to co-exist with the original forms without causing any conflicts, this must mean that the CRM platform assigns the required new ID’s to the form components. Based on this reasoning, I therefore assumed that once I deleted the original merged form and renamed the new copy (as well as configured the form order and security roles), I would have a clean solution file with unique ID values. After testing the solution import I was extremely glad to see that this was in fact the case, as no more error messages appeared during the import. Saved by the “Save As”!

Don’t Just Merge – Design

So, with the above workaround and a potential upcoming hotfix, is there any reason not to use the Merge Forms feature? In my humble opinion, the merge process is not a best practice but rather just a quick’n dirty way of getting the custom fields to appear on the entity forms. If you don’t in practice know how to customize your Dynamics CRM environment but need to cope with the updated UI of the new version, then the merge will technically make it possible to keep using your CRM data. What it will not do is produce a system that your end users will enjoy.

The merge will bring over a lot of duplicate content (all the default fields) that you may forget to clean away from the new form. It will also create very confusing components for the system administrators, such as the old “What’s New” section vs. the new Social Pane, which require a deeper understanding of the Dynamics CRM platform evolution to really figure out. The biggest risk is that the form content designed for the old version UI will end up living alongside the content that is specifically made for the post CRM 2013 world, creating a disconnected and illogical application that works differently depending on the area where the user navigates to.

Instead of taking the shortcut and doing a quick content merge, I recommend investing a bit more time and effort in planning what’s the best way to present the data and how to make it as easy as possible for the users to interact with it through the UI. If you need some ideas for improving the user experience of your Microsoft Dynamics CRM environment, take a look at my previous post that listed 10 tips for designing a great user experience in Dynamics CRM.

Power User Tips for CRM 2013 Navigation

5 comments

Posted on 3rd March 2014 by Jukka Niiranen in Tips

, , , , , ,

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.

Finding Advanced Find in CRM 2013

6 comments

Posted on 8th February 2014 by Jukka Niiranen in Tips

, , , , ,

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…)