Sunday, 27 August 2017

Dynamics 365 Customization and Configuration Tips

20:35 Posted by Benitez Here , , , No comments
I recently presented at CRM Saturday Melbourne and CRM Saturday Sydney. CRM Saturday is a free CRM Technical and Strategy event organised by the Microsoft Dynamics Community MVP's for customers, CRM Professionals, Technical Consultants and Developers. It gives you the opportunity to learn, share knowledge and meet peers in our line of work. It's a fantastic event and definitely attend one if there is a CRM Saturday where you are. The last one for the year 2017 is in Milan.

Thanks Greg for the photo 

I decided to present on tips that I've come across over the years with Dynamics CRM. I started my journey with Dynamics back in 2009 with CRM 4. It's changed over the years from CRM 4 to CRM 2011, to CRM 2013, to CRM 2015, to CRM 2016 and now Dynamics 365. New features have popped up along the way which all consultants needed to learn in order to assess whether they would be of value to the client/customer.

Even though these new features are amazing compared to the previous version of CRM, the fundamental principals of Dynamics CRM still exist. Creating a field, adding a new section onto a form, creating a workflow... these are still the basics that exist today. As years have passed, I've come across these tips (or even best practice) to apply for customization and configuration of Dynamics 365. Some you may be familiar with already, others not so much.

What's the difference between the two terms?

The definition of customization vs configuration is always a debatable topic in the community. For me, I follow the explanation outlined in this article.

Customization

  • Anything that can be done within CRM without resorting to the SDK or external code. 
  • Adding new fields to an existing entity, creating new entities, option sets, reports etc.
Examples include Fields, Entities, Relationships, Forms, Views etc.

Configuration

  • Any changes made to existing options available within the default installation of CRM.
  • Configuration applies to objects like: Business Units, Security Roles, Users, Teams, Auditing etc.
Examples might include changing the default currency from USD to AUD or setting up Mailbox Profiles.

My tips

1. Reuse system fields where relevant

For out-of-the-box entities such as Contact, there is a list of fields that are created as part of the default installation of Dynamics 365. This is what we call a "system" field. Often there are times where a data type can be captured in a system field and the only change that needs to happen is to relabel the field display name. It's good to relabel a field if it can be used rather than creating a new field. Saves one extra field from being created.

The most common one I tend to relabel is the Birthday field.


A lot of customers I have worked with usually want this to be relabeled to Date of Birth. To relabel a field, go to the entity in your solution and open the field attribute record. Change the Display Name to the desired label.

Bonus tip

It's important you do this within the Field Attribute record in the target CRM Solution and not within the Form Display Field Label customization. If you make the change within the Form, it will only change the label at the Form level. 

Why should you care? End users expect to see the field label that's on the form in Advanced Find or Views as they're not familiar with the schematics of Dynamics 365. I've come across this many times in my career where the field label was changed within the Form and support tickets are raised because they can't find the field they see on the Form in Advanced Find or Views. 

Make sure you always update the field label within the Field Attribute record.

2. Update system field to not be searchable

I'm a big fan of less is more, be clutter free in Dynamics 365. Not all system fields will be used by end users. Yes, you can remove system fields from the Contact form such as the Address 1: Shipping Method. 



However it will still appear in Advanced Find when end users are wanting to view a list of records with specific criteria.

To minimize the list of fields that is displayed, simply hide any system fields that will not be in use by updating the searchable option from Yes to No in the field attribute record.


This ensures that fields used by end users are only displayed and that they don't have to trawl through a long list.

Before

After

A reminder that this will only prevent the field being displayed in Advanced Find. The field will still appear when adding columns to within Advanced Find and in Entity System Views within your solution.

Bonus tip

If you want to perform a bulk update of fields to not be searchable, you can use Attribute Bulk Updater in XrmToolBox. This will save you time as you can do it in one go rather than painfully open the Field Attribute record one by one. Raising my glass to the fellow CRM'er who designed this nifty tool.

3. Append “id” to custom lookup fields

When creating custom lookup field, append "id" to the end of the schema name. This is so that end users or even colleagues in Managed Services in consulting companies know that the field is a Lookup field which is an association to another entity. For developers, it's so handy for them as they immediately know that this field is a foreign key in the source entity. Ben Hosk outlined this as a useful tip too.

4. Removal of double prefix in relationships

This one is more of a "I like to keep it clean" tip. When creating a custom Lookup field, the schema relationship name will automatically render a double prefix as you're creating it within a Solution that has a prefix defined. I tend to remove the additional prefix cause I find it more tidier #neatfreak

5. Mapping from source record to target record to reduce data entry

If you don't already know about this customization feature, then you're about to learn :) One of the cool things you can do is grab data from a field in a source record to a target record. The condition here is that the field attribute type must be the same. In other words, if a field in the source record is a Single Line of Text field then the field in the target record must be Single Line of Text too.


This is handy when you want fields to be automatically populated when creating a new record from an associated record. For example, creating a new Membership record from a Contact record where data from the Contact record is brought across.

6. Apply Global Option Set where relevant

The difference between a Global Option Set and an Option Set is that the former can be reused across Dynamics CRM whereas an Option Set is restricted to the entity that it is created in. For example if you create an Option Set within the Contact entity, you can only use it within the Contact entity.

Global Option Sets are handy for customers where the same values in a list will be used across Dynamics 365. One that I always create is a Yes/No Global Option Set. This is useful for customers where a Two Option/Boolean field is not appropriate as they require the end user to select Yes or No where the default when creating a new record for the first time is required to be blank.

The screenshot example below is for Membership Organisations where typically Member Type is used across Dynamics 365.

7. Tidy fields and navigation pane on out-of-the-box forms

With out-of-the-box entities, there is default forms with system fields already inserted into the form. Remove the system fields from the out-of-the-box forms such as the Contact main form that will not be in use by end users.  


Same goes to the navigation pane on the out-of-the-box forms by removing any related records that will not be in use by end users.


This is so that end users only focus on what they're meant to see and have access to. Keep the end user experience clean, remove the unnecessary noise.

Bonus Tip

If you want to save time in removing fields from entity forms, use the Bulk Form Attribute Manager in XRMToolbox. This will display all fields that are on forms and you can select which ones you want to remove.


8. Entity Form Tab naming convention

Tabs allow sections and fields to be grouped within an entity form. When you create a custom tab on an entity form by default the tab will be given a string as the Name value.


If you look at out-of-the-box entity forms in Microsoft Dynamics 365 (in my case, Contact) the naming convention is: <Tab Name>_TAB.


Follow this naming convention for consistency throughout your solution.

9. Section naming convention

After discovering the above about four years go, I decided to investigate the naming conventions for Sections. Sections allow fields and sub-girds to be inserted within an entity form.

I found that the Section naming conventions are not consistent out-of-the-box. I think this is due to how CRM started out with Version 4 and the underlying schema has remained the same for sections.
To keep it consistent with Tab Naming Conventions, use the format of: <Section Name>_SECTION.

10. Update out-of-the-box system views Consistency of views using View Layout

The current theme you'll find in this post is about keeping the end user experience clean, consistent and clutter free. This tip is about ensuring Views are consistent, for example the columns in the Active Contact view can also be the same for the Contacts Inactive View.

Before

After

I've done a lot of customization over the years and I found this to be a common recurrence with customers where they expect the same columns in a majority of entity views.

Bonus Tip

View Layout Replicator in XrmToolbox can be used for achieving consistency of views. You basically select a source view that contains the columns you want to be applied to other views. Once you select the source view, you can select the target view and simply publish the changes.

11. Sequential Business Rules

I presented this tip at the Melbourne Dynamics 365 User Group back in October 2015.



This is something painful I experienced two years ago when working on a government project. There was quite a few Business Rules that we were implemented on a form. I had odd behaviour happening that I didn't want, and the Business Rules that I wanted to work when required (such as when field xy is updated, do abc...) never did. It drove me crazy and then after doing some Googling, I discovered the Business Rules will execute based on the order it was activated #goodtoknow #whydidntanyonetellme #wastedhours

Thankfully, I get to share this one with you. To prevent conflicting Business Rules, use a numbering system in the Name and activate them in sequential order.

My bonus tip for this is to append 0 for single digit numbers to ensure business rules displaying sequentially.

Before - no 0 appended before the single digit number

After – 0 appended prior to the single digit number

I actually had someone from the audience come up to me afterwards saying they went through this exact same problem and thanked me for my tip which was nice. It's so simple yet effective.

This is also really great long term for CRM super users or Managed Services consultants. 
  1. If you have enhancements in the future where additional Business Rules is required, deactivate all Business Rules and rename them in order. Then activate them in the required order.
  2. When trouble shooting as part of a support ticket/case/service request and the Business Rules is required to be deactivated for issue resolution, you'll know which order to activate it once fixed.

12. Improve Quick Find Search duration

By default when browsing through entity views or search results in Microsoft Dynamics 365, the number of records is limited to 50 records per page of the view.

When using the Quick Find Search, sometimes you use the wildcard function (*). For example, search for “*com” against the Active Accounts View. This will retrieve any account record that contains “com” in the fields that have been enabled for Quick Find Search.

You can increase the performance of the search by increasing the Records Per Page limit from 50 to 250. 

To read more about this, checkout this post.

13. Using App Designer for a better end user experience

A new feature that was introduced in Dynamics 365 is the App Designer which allows you to create a new app which can be selected from Dynamics 365 and restricted to specific security roles.


I'll demonstrate this further in my next post so keep your eyes peeled. Subscribe to my blog if you haven't already done so.

Summary

All of the above is tips I've accumulated through out my journey with Dynamics 365. The fundamental principals still exist inspite of new features being introduced in each release. I hope you've learnt something from me today.

Below is a copy of my slides I used for CRM Saturday Sydney.
Note: the slides will automatically go to the next slide after 15 seconds.



Enjoy. Toodles.

Sunday, 16 October 2016

Tips for end users after go-live

21:15 Posted by Benitez Here , , , No comments
Earlier this week I presented at the Melbourne Dynamics365 User Group in the Just 1 Tip slot. This is where presenters share their tips and tricks for 5 minutes with the audience. My tips were on what end users can do after Microsoft Dynamics CRM has gone live. As consultants or service providers, sometimes we forget about the little things that affect the initial CRM experience. In this post I don't have a vlog as what I'm sharing is quite straight forward.

Tip 1 - Easy access

Desktop shortcut

For end users to get to their CRM instance quicker on their laptop/PC, you can create a desktop shortcut.

First, copy the CRM instance URL. On the desktop, right click and select "Desktop"within the New option. A wizard will appear where the URL can be pasted. 


Presto - end user will have a desktop shortcut in minutes. Next time, to access CRM they can simply click on the desktop shortcut.

Browser favourties

Another alternative is to create a browser bookmark or adding the URL to the bookmark bar. You can do this in Internet Explorer, Google Chrome or Mozilla Firefox. My screenshots below is from Mozilla Firefox.


Tip 2 - Changing personal settings

Records per page

If there is a lot of records for a particular entity (eg. Cases), I like to recommend to clients to change the limit of records that are viewed per page. This can be configured in personal settings in the General Tab. 

Format

If you create a new CRM instance, try remember to update the format immediately in System Settings from English (United States) to English (Australia). This way, when the CRM user profiles are created the end users will inherit the format. Otherwise if you leave it as English (United States), the end users will inherit this format. 

No worries, if this is the case then simply update the Systems Settings in the Administration area of CRM and request end users to update their format in personal settings to English (Australia). It's a one-off task.


Tip 3 - Pin frequently accessed view and/or records

For quick access to views, dashboards or records that an end user may need regular access to, the end user can pin these within CRM. This is useful for someone like an Account Manager/Salesperson that is working on a hot Opportunity or when a Customer Service/Support Consultant is working on an high priority case, where each end user needs to get to their record quickly.

You'll see a clock icon towards the top right of the window. Click on this fella and a menu like window will appear immediately. On the left will be a list of views recently looked at and on the right will be a list of records or dashboards recently looked at. Hover over an item and a pin icon will appear. Click on the pin, and the item will move to the top of the list. 


The item will remain "pinned," until the end user decides to remove it from the pinned list.

Tip 4 - Changing the default view

If the system default view is not applicable to the end user's everyday role in CRM, it can be changed to a different view. For example, the system default view may have been set to Active Contacts. The end user may want to see their Contacts only each time they navigate to Contacts. Similar to the previous tip, simply select the view and click on the pin icon. This will make the view the default view.

Tip 5 - Follow other colleagues or records

End users can keep an eye on what their peers are up to or any recent interactions with a record. "Follow" was introduced back in Microsoft Dynamics CRM 2011 where a wall features updates to users or records that an end user follows. It's pretty much like a Facebook wall. This is particularly useful if end users want to understand what is happening within their organisation such as being kept up to date in regards to a hot Opportunity.



Updates to the record or peers you follow will feature on the "What's New" in Activities or the "Posts"component of the record. You can also reference peers through posts to get the communication flow moving.

Tip 6 - Add CRM as a trusted site

OK, this one used to get me all the time. To my fellow consultants, you know you experience this when you set up an environment for the first time and you're testing your work. The dreaded pop-up blocker goes "HEYYYYY... WHAT'S UP, REMEMBER ME OLD FRIEND?! BURN!" Yeah, that annoying thing. 


And if you don't tell the end users this prior to go-live, you're going to get a few support tickets or enquiries about this harmless issue. Why? Because this is their first time with CRM and they'll freak out or will get frustrated. So this is an important tip.

The end user will need to add the CRM URL as a trusted site in their browser or update the permitted URLs in the the browser pop up blocker. My screenshot is from Firefox Mozilla.

Summary

There's some configuration that end users can do after CRM has gone live which can make their experience with CRM better. These tips have been listed in this post and hopefully are useful. If you have any other suggestions, feel free to comment below.

Toodles.

*CRM'ing with passion*

Other news

I recently joined a startup consulting company called State of Matter, Superfluid. It's a neat place and I'm loving it. I have a cool role (other than being a CRM Consultant) which I'll be able to share soon. Here's a few snaps of my new office.









Saturday, 17 September 2016

Cloning records in Microsoft Dynamics CRM

21:33 Posted by Benitez Here ,
Cloning is one of those nifty features that doesn't exist in Microsoft Dynamics CRM out-of-the-box.
The exception is in the Product Catalog where you can clone a Product but alas, elsewhere in CRM it does not exist. Enter IOTAP Record Cloning - with one click you can clone a single record or generate multiple cloned records.

I presented the IOTAP Cloning Tool earlier this week at the Melbourne Microsoft Dynamics CRM User Group so thought I'd share it with you CRM'ers as a vlog.


Check out my vlog below (and same as last time, blooper reel at the end).

What is the IOTAP Record Cloning?

It's a Microsoft Dynamics CRM add-on from IOTAP and is a managed solution. It's easy to install for On-Premise and Online. It already has out-of-the-box configurations ready to go at your disposal after the installation has been completed. To name a few:
  • Invoice and Invoice Products
  • Quote and Quote Products
  • Price List and Price List Items
Once installed you can clone and do some additional configuration to modify the cloning output.

What to use it for

The cloning tool allows you to clone records at a primary level such as clone an Account. It also allows you to clone related records such as clone the Contacts associated to the Account when cloning an Account record.

You have the option to clone a single record or generate multiple cloned records from a record. 



When the cloned record is generated, you'll see a prefix of [Clone] appended to the name of the record.


You can also generate cloned records from a CRM workflow. The IOTAP Record Cloning tool managed solution provides a custom workflow activity which you can call as a step in a CRM workflow.

What configuration do you need to do?

There's three types of configuration:
  1. Clone Attributes Exclude
  2. Clone Related Records
  3. Clone through workflow
For #1 and #2, navigate to this area by heading to Settings > Extensions.

1. Clone Attributes Exclude

If you want to exclude fields when cloning records, you can do so by referencing the Name of the field. To add more fields, simply insert a comma and the Name of the next field you want to exclude.


Grab the Name of the field through the CRM solution.

2. Clone Related Records

If you want to clone related records, you can do so by referencing the Name of the parent entity and the relationship Schema Name.


Grab the Schema Name of the field through the CRM solution.

Check it out in action

After you have set up your configuration of excluding fields and related records, you can start cloning records. In my vlog I cloned an Account which 
  1. excluded the Address 1: City and Address 1: Country fields 
  2. cloned the associated Note and Contact records

3. Clone through workflow

The IOTAP Record Cloning tool managed solution includes a custom workflow activity.


Create a new workflow and simply add the custom workflow activity as a step after your condition. 
Define the properties in the workflow by entering the entity name and the number of cloned records you would like to generate. More about what the GUID is used for here.


When the condition has been met, the custom workflow activity will kick in and you'll see the cloned record in the entity view shortly. In my vlog, I had a simple condition where, when the Account Relationship Type equals "Competitor," go ahead and clone the Account.

Clone Log

There's also a Clone Log which is useful if you need to understand why a clone process failed. You can also provide the details to IOTAP support should you need additional assistance.


What you need to be aware of

Update security roles

If your client goes forward with this cloning tool, don't forget to enable the required security roles with the privileges and correct level of access. I made this rookie mistake, oops. That's my tip for you :)

Only clones at a single 1:N or N:N level

When cloning related records, it does not cascade to additional related records.

Inactive records will be Active

When cloning an Inactive record, it will generate the cloned record in an Active State. For example, if you clone an Opportunity that has been closed as "Won," it will be Active with the last Business Process Flow of "Close" as the stage.

I checked this out with Sumeet Ballani from IOTP and his response was,
"The BPF will be at the same stage as that of cloned opportunity. However cloning allows to exclude certain fields from getting copied to the cloned record. These excluded fields could be configured in cloning." Thanks Sumeet! :)

Lookup records will not be cloned

You can only clone 1:N, N:N related records. N:1 (lookup records) will not be cloned. An example is the the Customer field on the Order, only Order Products would be cloned.

Licence

Here's how much it costs. It's not that expensive in my opinion as it provides functionality that does not exist in CRM out-of-the-box.

Additional links

Is there another method of cloning I can use?

If you don't need to clone related records and only want to clone a record at a single level such as Accounts and no associated records (eg. Contacts associated to the Account), refer to Leon's blog post. You can create a workflow that will clone a CRM record. This is great as there's no licence or developer involved however the cost is time as you will need to configure the workflow yourself. Not really a big issue.

Basically weigh it up:
  1. Do you need to clone across CRM and related records? Then use the IOTAP Record Cloning tool.
  2. Do you only need to clone records for set records at a single level and not related records? Try out Leon's suggestion. If it doesn't suit you, it's cool - try the IOTAP Record Cloning ool. The trial lasts for 10 days.

Summary

I like the IOTAP Record Cloning tool. I think it's simple and does a good job in providing the following
  • Clone a single record at a primary level with the ability to clone related records
  • Generating multiple cloned records at a primary level with the ability to clone related records
  • Excluding fields from the cloned record
  • Generating a cloned record from a CRM workflow
Do I recommend it? Of course! Try it out for yourself. In my vlog I simply installed a trial of the IOTAP Record Cloning tool in a trial Microsoft Dynamics CRM Online environment.

Thanks for reading, toodles!

Special thanks

I'd like to say thank you to Sumeet Ballani for answering my questions in the past week. Sumeet has been responsive and helpful. He shared with me that there will be a newer version of the IOTAP Record Cloning tool this November:

Presently we are working on building new Clone…which would be much better then present one…
  • No Popup
  • UI to do all configuration
  • No need to add additional field in custom entity for cloning
  • Lot of improvements over current one…
This new clone would be out in early November.