CRM 2015 – Nested Quick Create Forms

The introduction of Quick Create Forms in Dynamics CRM 2013 provided a simpler way for users to create records for core entities from anywhere within the system. However, there is one disadvantage in that it does not launch subsequent Quick Create forms to populate lookup fields. Thankfully, Dynamics CRM 2015 supports what are called “nested” Quick Create Forms.

clip_image002

Let’s say you are given a business card and you want to enter the details of a person into your CRM system. You could use the Contact Quick Create form to enter the basic details of the person, but what happens when you need to create an Account record for that person at the same time? In CRM 2013, you would have to click on the Company Name lookup, then Lookup More Records followed by the New button which would pop open an empty Account form in a new window.

clip_image003

clip_image004

clip_image005

Now let’s compare this with CRM 2015 and its ability to launch multiple Quick Create forms when populating lookups. Again you would enter the basic details of the person, but now when you click on the Company Name lookup, you will see that the New button is available without having to open the Lookup dialog.

clip_image006

clip_image007

When we click on the New button, an empty Account form will not be displayed in a separate window. Instead, a nested Quick Create form is displayed.

clip_image008

This makes it super easy to create records from the Quick Create forms! Now the question is, how many nested Quick Create forms can we launch in one go? I added the Parent Account lookup to the Account Quick Create form and managed to launch 10 Quick Create forms at one time. Once you reach the limit, the New button is no longer displayed.

clip_image009

This new feature will definitely save you time in creating core records in your CRM implementation.

Advertisement

Dynamics CRM 2015 – The Under Operator

Advanced Find now includes two new operators which work in conjunction with the new hierarchies feature in Dynamics CRM 2015. These operators are called “Under” and “Not Under” and can be used when querying lookup fields in Advanced Find.

clip_image002

I have currently set up the Users in our CRM system such that the Manager for each user has been specified. This builds a user hierarchy in the system so we can easily see who reports to who. Let’s assume we have an organisational structure where there are multiple managers at different levels.

clip_image003

It would be a tricky in previous versions of CRM if I wanted to build a query to show everyone who sat below Bob Jones. In CRM 2015, I can simply use the “Under” operator to find these people.

clip_image004

Running this query gives me everyone who sits below Bob Jones, whether they are a direct relationship with that record or not.

clip_image005

Dynamics CRM 2015 for Outlook Configuration Wizard

Microsoft Dynamics CRM 2015 introduces a new Configuration Wizard for the Outlook Client. The process is pretty much the same as previous versions of Dynamics CRM, however the screens have been simplified and the process has been made much easier when choosing to download the client from the CRM web application.

When you login to CRM, you will notice a yellow bar across the top of the screen which asks you if you wish to download CRM for Outlook.

clip_image001

Clicking on this button now displays some useful information which makes it a lot easier for general users to configure the client. Previously it was difficult to remember the correct URL to use when configuring the client, but we can now use the Discovery Service URL, Organization URL, or simply the URL of the deployment. Notice how the URL is provided for us, and we can simply click on the Copy button so we can use the URL during the configuration stage.

clip_image002

Another new feature is that we are immediately prompted to start the download from within CRM and we are no longer redirected to the Microsoft Download Center.

clip_image004[1]

When you run the Configuration Wizard, the first screen you will see will give you the option to enter the URL for your CRM deployment. For example, if CRM is installed on a server called “CRMSVR”, you would simply type http://CRMSVR into the address box, or paste the link that you copied earlier. Alternatively, you can pick CRM Online from the drop-down list for the online offering.

clip_image006

After entering the address for an on-premise deployment, you are then asked to select an organization to connect to. The organizations are displayed in a drop-down-list.

clip_image007

Choose an organization and then click on Select.

clip_image008

If you selected CRM Online, you are asked to enter your credentials.

clip_image009

That’s all there is to it. There are a few things to note about the installation and configuration stage. You now have to restart your computer after installing Dynamics CRM for Outlook. Also, you cannot launch the Configuration Wizard until you have set up an e-mail account inside Outlook.

New Condition Operators in Dynamics CRM 2015

With the introduction of the new hierarchies feature in Dynamics CRM 2015 comes new condition operators that can be used with the ConditionOperator enumeration in the C# SDK as well as FetchXML queries. These new operators are intended to support records that are related via the new Hierarchies feature of CRM 2015. Some operators include recursion limits to mitigate performance issues when running queries.

Above

Returns all records above the referenced record in the hierarchy. The FetchXML equivalent is above. This query has a recursion limit of 100.

AboveOrEqual

Returns the referenced record and all records above it in the hierarchy. The FetchXML equivalent is eq-or-above. This query has a recursion limit of 100.

Under

Returns all records under the referenced record in the hierarchy. The FetchXML equivalent is under. This operator has a recursion limit of 10.

UnderOrEqual

Returns the referenced record and all records below it in the hierarchy. The FetchXML equivalent is eq-or-under. This operator has a recursion limit of 10.

NotUnder

Returns all records not below the referenced record in the hierarchy. The FetchXML equivalent is not-under. This operator has a recursion limit of 10.

Important: Please note that this blog was written during the Dynamics CRM 2015 Preview Release Program. At the time of writing, only the Under and Not Under operators were available inside Advanced Find, so this may change with the final release. Also note that the OData endpoint has not been updated to support querying of hierarchical data.

clip_image001

Dynamics CRM 2015 – Global Search

Another highly anticipated feature of Dynamics CRM is Multi-Entity Quick Find, which allows users to search across multiple entities. Many ISVs have built their own implementations and it is nice to finally see this part of the base product. In this post, I will refer to Multi-Entity Quick Find as global search for simplicity.

clip_image001

Global Search is available on the navigation bar, next to the Advanced Find button. Simply enter a search term and click on the search item (or press ENTER) to execute the search. The searchable fields for an entity are defined by the Find Columns of the Quick Find View for that entity. Global Search also supports wildcard searches.

clip_image003

This displays a dedicated search results page which I really like the look of. It provides the ability to enter additional search queries without having to navigate back to the navigation bar for subsequent searches. The results are grouped by entity and are displayed vertically with tiles and key information about the record. If you have uploaded images for certain records (e.g. Contacts and Accounts), the image will be displayed instead of the entity icon.

A user can simply click on a search result to open the record, or they can click on the + (plus) icon next to the entity name to create a new record. Doing so will either display an empty form, or the quick-create form.

The Filter with drop-down list displays the entities that are configured for global search. A user can select any item in the list to only show results for that entity.

clip_image004

We’re not restricted to only these entities. Additional entities can be configured for Global Search on the General tab in System Settings.

clip_image006

Clicking on the Select… button lets you select the entities to be configured for Global Search. This list also includes any custom entities that you create.

clip_image008

I tried specifying every single entity and received an error message stating that you can only specify a maximum of 10 entities for global search.

clip_image009

With this restriction in place, it is important to have a good think about the core entities in your system that need to be configured for global search.

Dynamics CRM 2015 – Global Advanced Find

You asked for it and Microsoft has listened! Dynamics CRM now provides the ability to launch the Advanced Find window from anywhere within the application.

clip_image002

Previously, the Advanced Find button was only available on the command bar (or in the overflow menu) on forms and views which was a bit of a nuisance and required a few clicks just to launch it.

An important thing to note is that when you launch Advanced Find from a form, it opens in a separate window with no minimise or restore buttons. You also cannot click back onto the main window to navigate back to the form.

clip_image004

Launching Advanced Find from within a view yields a different result. The window that opens allows the user to minimise and restore.

clip_image006

Having Advanced Find globally available is one of my personal favourite features of the new release. Stay tuned for more new features in Dynamics CRM.

Dynamics CRM 2015 – Customizing Hierarchies

Microsoft Dynamics CRM now provides you with a hierarchical view of records out of the box for selected entities, with the ability to customize this view for custom relationships. It is also possible to customize the hierarchy tile view to display different fields on each tile.

Firstly, let’s see how the out of the box Account to Sub-Account relationship is configured to display a hierarchical view. If we go into our customizations area and take a look at the 1:N relationship self-referential relationship for Accounts, we will see a new Hierarchical option which is set to “Yes”. Note that this cannot be changed.

clip_image002

Looking at the Account to Contact 1:N relationship, we will see that this option is set to “No” and again cannot be changed. This means we cannot view Contacts belonging to a particular Account from within a hierarchical view. The 1:N self-referential relationship for Contacts is also not enabled for hierarchies.

clip_image004

Can I enable Hierarchies for Custom Relationships?

You sure can! Here I have created a custom 1:N self-referential relationship for Contacts and have set Hierarchical to “Yes”.

clip_image006

Next, we need to create a new Hierarchy Setting under the Contact entity. This is done under the entity configuration and is solution-aware which means the rules are included when you deploy the solution to another environment.

clip_image008

Clicking on New brings up the configuration settings for a new Hierarchy. Enter a unique Name and select a Default Quick View Form which will be used when displaying the tiles for each record in the hierarchy. I have decided to use the Contact Quick Form but you can also choose to create a new Quick View Form if you wish.

clip_image010

To obtain a list of relationships for the current entity which are enabled for hierarchies, click on the hyperlink. You can select a relationship in the list and mark it as hierarchical.

clip_image012

Click on Save and Close and then publish all customizations. After linking Contacts together via my new custom relationship, I can now see that these records are part of a hierarchy and I can simply click on the hierarchy button to view the hierarchy.

clip_image014

clip_image015

Notice how we have four fields on the hierarchy tile. The default Contact Quick Form also includes the Company Name field, but this is not displayed on the tile. It appears that only a maximum of four fields can be displayed. I have added the Home Phone field before the Mobile Phone to illustrate my point.

clip_image017

clip_image018

Notice how the Mobile Phone field is no longer displayed.

There you have it! A very simple way to configure entity relationships to take advantage of the new hierarchy feature in Dynamics CRM. Remember that the hierarchy feature is available for the Account, Campaign, Case, Contact, Opportunity, Order, Product, Quote, Team and User entities.

Dynamics CRM 2015 – Hierarchies

This feature has been requested over and over and I can gladly say it is finally available out of the box! Yes, I’m talking about the ability to view a hierarchy of records in a tree view from within your CRM system. This feature is available for the Account, Campaign, Case, Contact, Opportunity, Order, Product, Quote, Team, and User entities, but is only enabled out of the box for the Account, Product and User entities.

clip_image002

Firstly, let’s take a look at how this work for Accounts. I have setup four Accounts in CRM where none of the Accounts are related to one another. The screenshot below shows what this looks like in the “Active Accounts” view – nothing special here.

clip_image003

It would make more sense if the “Magnetism” account was the top-level entity, with each of the other accounts sitting beneath it as sub-accounts. We can achieve this by setting the Parent Account field on each of these records.

clip_image005

After saving these accounts, you will notice a new button is displayed next to the “Previous” and “Next” record buttons on the form. This button tells the user that this particular account has a hierarchical relationship with other accounts.

clip_image007

Clicking on this button displays a hierarchical view of related accounts where the one highlighted in orange represents the record that you were currently working on.

clip_image008

Each record is displayed on a separate tile and the user can select a different tile to open the record. To the left of the hierarchical view, we have a navigation control. Clicking on a specific link on this control highlights the associated item in the hierarchical view.

clip_image009

clip_image011

If we go back to the “Active Accounts” view, we will see that the button is available next to each related account to view the hierarchy of accounts.

clip_image012

As mentioned above, the hierarchical view is available for a number of entities, including the User entity. Selecting a particular tile in the tree only displays the direct children of that record and an overflow button is available to click to view records further down the tree.

clip_image014

The hierarchical view is customizable for out of the box and custom entities and the information shown on the tiles can also be modified. We will take a look at these customization features in my next post.

Fix Incorrectly Created Status Reasons in Dynamics CRM

The Status Reason field in Dynamics CRM is a special field which allows you to provide reasons for the status of a particular record. For example, an Article can have a Status of “Active” and a Status Reason of “Awaiting Review”, “Approved”, “Published” etc. Likewise, an Article can have a Status of “Inactive” and a Status Reason of “Expired” or “Deleted”. But what happens if you configure your Status Reasons incorrectly?

I had recently made a mistake while configuring the Status Reason field such that a user could set an Article to Active – Deleted, which was not the desired functionality. The “Deleted” status reason should instead be linked to the “Inactive” state.

clip_image001

The CRM implementation also enforced strict rules so that the “Deleted” status reason must have an ordinal value of 213,940,003. Let’s see what happens when I try to simply re-create the “Deleted” status reason against the “Inactive” state.

If I try to delete and re-create the “Deleted” status reason, the CRM platform automatically assigns it the next available ordinal value of 213,940,006 and it appears that I cannot change this value.

clip_image002

Thankfully there is a way to change this value without any nasty database hacks.

Firstly, remove the “Deleted” status reason, save your changes and publish customizations. Next, add the “Deleted” status reason to the list of “Inactive” status’ as we previously attempted.

clip_image004

On the Add List Value screen, press F12 to launch Internet Explorer Developer tools.

clip_image002[1]

Make sure the HTML tab is selected and then select the cursor icon.

clip_image005

Back on the Add List Value screen, hover over the Value textbox so it appears with a blue outline and then click the mouse.

clip_image006

Back on the Internet Explorer Developer Tools screen, on the right-hand pane, select Attributes and then select the disabled attribute. Press the delete button to remove this attribute.

clip_image008

The Value field will now be editable. Change the value from 213,940,006 to 213,940,003 and then click on OK.

clip_image009

Save the changes to the Status Reason field and publish customisations. The “Deleted” status reason will now be available to select when making records inactive.

.NET and Microsoft Dynamics CRM Developer