Tip #1049: Download Dynamics 365 documentation

If you have recently searched for documentation for Dynamics 365, you have probably discovered that the documentation is consolidating in https://docs.microsoft.com/en-us/dynamics365/.

So if you click “Enterprise Edition Applications,” you can find the user guide, customization guide, and administrator guide for Sales, Customer Service, Field Service, etc.

But what if you yearn for the old days and want to download a copy of the documentation? The good news is, you still can. From any page on docs.microsoft.com, look at the lower left side of the screen.

This will get you a PDF copy of the entire guide which you are viewing, just like old times.

Cover photo by Chris Lawton on Unsplash

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1048: Save As is a new New

There are a few obnoxious special, from a customizer point of view, entities in Dynamics 365. Quote Product, Order Product, Invoice Product, to name but a few. These entities have some artificial limitations around what can be customized. For example, new views cannot be created; NEW button just isn’t there!

Sometimes we are so immersed in the complexities of the new Dynamics 365 features that obvious solutions just fly by unnoticed. For years.

For years I thought that all customizations for these entities are out of limits including creating views. Until Guido “Trekkie not Star Wars fan” Preite mentioned in passing that one can use Save As functionality to get a new view. (*walking away…*)

Order product view

  1. Don’t see New or Edit button? Just double-click the view you want to edit.
  2. Then click the Save As and give it a name of your choice.
  3. Don’t like what you’ve created? Double-click to edit then click Actions > Delete View.

 Cover photo by Travis Yewell on Unsplash

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1047: When in Doubt, Go Global (With Option Sets)

This is a lesson I have learned the hard way so take my bitter experiences and consider it wisdom derived from idiocy.

The lesson is simple. When creating an option set, unless you are ABSOLUTELY certain you do not need to, make it a global one. Even if you are absolutely certain, make it global anyway.

The consequences of not heeding this advice are almost as injurious as . If you have ever had the displeasure of trying to get a workflow to pass a value from one entity-defined option set to another, a row of soldiers with pointy sticks will not seem too bad an alternative.

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1046: Find days until retirement

A question from a reader at a financial services firm:

I need to know how many days until my client reaches 65 years old. How can I do this with minimal configuration?

This type of calculation can be done using standard calculated fields in Dynamics 365.

  1. First, you will need to have a field that stores when the contact was born. While CRM includes a standard birthdate field, it is a date only field, you cannot mix deterministic and non-deterministic dates in calculation formulas. Since we will be calculating the difference between today and the contact’s 65th birthday, we will need to store the date in a local date time. Create a new birthday field(new_birthday). Just remember to set the time in field values to be 10:59 so the birthday isn’t displayed incorrectly in different timezones.
  2. Create a calculated whole number field for days util 65th birthday. Use formula DiffInDays(now(), ADDYEARS(65,new_birthday)) to get the number of days until 65.

Got any tip suggestions or question which might result in good tips? Send them to jar@crmtipoftheday.com

Photo by Cristian Newman

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1045: Missing fields on Dynamics 365 account form

If you work with a Dynamics 365 v9 environment, you may notice that Microsoft has worked hard to simplify the default account form. In the past, there were many fields that were rarely used, so simplifying the form is a great thing. But some people may argue that they may have gone too far, as some frequently used fields are not displayed on the form by default. If you are a new CRM configurator, you need to know about these fields and form components are available so you don’t create unnecessary custom fields.

  • Account number: A text field and is frequently used when integrating Dynamics 365 with your ERP or financial system.
  • Address 2: Dynamics 365 includes 2 addresses on the account entity (and as many as you want more via the “more addresses” entity). By default, only address 1 is displayed. If you have two primary addresses for your customers (such as mailing and street address), add address 2 and define for which purpose each address should be used (such as street address in address 1 and mailing address in address 2).
  • Relationship Type (customertypecode): Option set used to classify companies based on the type of relationship that they have with you. Need to identify whether a company is a customer, prospect, competitor, or vendor? Use relationship type and update the option set with the appropriate values.
  • Category: Option set capturing whether the customer is “standard” or “preferred”
  • Classification: Option set indicating the potential value of the customer account based on the projected return on investment, cooperation level, sales cycle length or other criteria.
  • Modified By and Modified On: System fields indicating who last updated the record and when it was updated. If this is important detail to see on the record, you may want to add these fields to the form footer.
  • Status and Status reason: indicate the status (active/inactive) of the record. Typically users can tell if an account is active or inactive based on whether the record is editable; however, if you integrate your accounts with another system (like ERP) or you don’t grant users security permissions to update records, they may see active records on read-only forms, so adding the Status or Status Reason to the account form may be helpful in identifying the active state of a record.
  • Bonus: Bing map control–it’s still there, you just need to add it to the form if you want to display it on the form.

While this tip is simple, it serves two purposes:

For new CRM administrators and configurators, you need to be aware that these fields exist so you can take advantage of them if you need them. Between relationship type, category, and classification, there should be little need to create new categorization fields for companies.

For seasoned professionals with Dynamics CRM environments configured years ago with overly complicated account forms, you may want to consider resetting your account form to the default configuration when you upgrade to v9, and only add the additional components that you need to have on the form.

Cover photo by Julia Janeta on Unsplash

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1044: Display lookups as hyperlinks in portal entity list

Entity lists in the Dynamics 365 portals do not have any special handling for the lookups – they just render the display names. Fair enough, after all, how is the rendering code supposed to know what page to link to?

If you are comfortable with liquid in portals then the task is relatively easy. Just use the entity list advanced sample and modify it to render lookups as hyperlinks. (If you find that someone butchered a copy-pasting of Adxstudio documentation, go to the nicely formatted source while it’s still available).

If you prefer standard entity list rendered by one of the built-in templates, then a bit of JQuery magic will do the job. Use the sample script as a starting point and just wrap the content of the lookup column using <a> tag. For example, the following code will convert any quote lookup it comes across in the entity list into a link to “/quote/?id=” page.

$(document).ready(function (){
  $(".entitylist.entity-grid").on("loaded", function(){
    $(this).children(".view-grid")
      .find("td[data-attribute='quote']")
        .each(function(){
          $(this).wrapInner("<a href='/quote/?id=" 
          + $(this).data('value').Id + "'</a>");
    })
  });
});

 

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1043: The Easy Way To Find The Fields Workflows Depend On

If you have a field on a form which is used to trigger a workflow, you probably do not want to mess with it too much. You certainly do not want to be rapidly changing its value or having Dynamics 365 think the value has changed because, for example, a Flow is updating the entity and marking the entire record as updated.

Therefore it may be handy to identify which fields are being used to trigger workflows. You could exhaustively open up every workflow and check or you could click on every field in every entity and Check Dependencies but, thankfully, there is an easier way.

If you do an Advanced Find on the Process entity, there is a field called “Trigger on Update Attribute List”. Add this as a column and for every Process in your system it will show a comma separated list of the fields used to trigger the Process. Unfortunately, in v8.2 it is not possible to export the Advanced Find results to Excel but you can in v9 (and, one would hope all later versions).

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1042: New trial sign up options for Customer Engagement

We are one whining bunch. We said that 30-days trials are not long enough. Then we said that 30-days trials are not short enough. Microsoft did listen and now we have some new sign up options.

Today Microsoft has released a new Customer Engagement trial sign up service for Microsoft Employees and Partners. You can now sign in using your Microsoft Partner or Microsoft employee credentials to access personalization options. This includes specifying the purpose and preferred duration of your trial. You can add the trial to any tenant you have access to.

What’s New?

  • Choose the preferred duration of your trial – 2 days, 30 days, or 90 days.
    • Depending on the trial purpose you select, Microsoft will recommend a trial duration period based on the partners feedback.
  • Tell Microsoft which tenant you want your viral trial activated on.
    • Sign in with your Partner or Employee credentials, and then during personalization you can specify the demo account you want to use.
    • Need a new demo tenant? Create one at demos.microsoft.com.

What are you waiting for? Go ahead and try:

  1. Navigate to http://trials.dynamics.com and select the option “Are you signing up on behalf of a customer or for development purposes?” You will get a prompt to enter your credentials and proceed to the personalization experience.
  2. Personalize
    Personalise trial
    Note a small information icon with a little disclaimer hiding behind it: You may add and manage multiple trials within the same tenant. Bring your own demo tenant or add a trial to your organization’s tenant. Note, you may not be a global administrator for your organization’s tenant. Please visit demos.Microsoft.com to obtain a demo tenant with global administrator permissions.
  3. Make some choices (and be aware of the 25 trials limit)Trial limit

Looks like you need to be a global admin in your tenant which is what I expected anyway but would have been nice to have it in a big bright letters to stop the disappointment of rejection.

Cover photo by Nathan Dumlao on Unsplash

 

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1041: Make Dynamics 365 data import less rigid

Kevin Altman emailed jar@crmtipoftheday.com with the following question about data import in Dynamics 365:

Users want to perform updates to existing data in CRM but the export for update/re-import process is too rigid as data often changes between the export and re-import, blocking the import (I guess CRM forces you to have no changes to re-import). Are there any workarounds?

First, a few details about how the data import works. When you export to Excel, you will notice that columns A-C are hidden.

Unhide columns A-C, and you will see three columns where the header name begins with (Do not modify). If you have read tip of the day for long, you know that we like to dare greatly, so we are going to modify the do not modify columns (we also removed the tags from our mattresses).

So what are these hidden columns?

A: The GUID of the record:this is how CRM knows what record to update. If it used the record name, it would potentially hit duplicates and not know what to do. By using the unique identifier for the record, it precisely matches to the correct record. This is also how import utility and immersive Excel know when a line is an update vs. a new record to create–if there is no value in column A, it will create a new record. This is also a field that you can use to trick import to updating records that are not included in the export.

B: Row checksum: a hash that Dynamics 365 uses to see if the record has changed. That way it only updates the records that have changed, while ignoring the rest.

C: ModifiedOn: This is the important one for our example. This is the modified on date of the record in CRM. When importing, Dynamics 365 compares the date in column C with the modified on date of the record. If they are different, the import will fail for that row. This is there for a reason–if you export and wait 3 months to import, and users have subsequently made changes to the record in CRM, if it didn’t compare the dates, newer data could get overwritten by older data from the import file.

Let’s say you have a busy CRM environment where system processes and data integrations are frequently updating records. You want to do a data cleanup of your contact data. You export out your active contacts to Excel, and you have your worker bees start cleaning up the data.

If your environment is active, chances are that at least some of the records will fail to import because their modified on has changed in CRM before your data cleansers have finished their cleanup. Modified On changes if anything with the record changes, sometimes if someone saves a record without changing anything, or if someone walks in the vicinity of the record and sneezes. So even if none of the fields in the export file have changed, the record will not update because the modified on date of the record in CRM is different than the date in column C of the spreadsheet.

So how can we get around this?

Note–the following solution is not supported (as Microsoft has told you not to modify these columns) but it works and has been tested by the author of this post. He is not responsible if you mess your data up though).

So we exported our contact data out, cleaned it up, and now we want to reimport it. Here is one approach to avoid the date restriction

  1. Export a second copy of the data to be imported. In my example I called my second export export2.xlsx. Unhide columns A-C.
  2. To the right of the data table in the original spreadsheet,add a new column and format to the format that matches column C
  3. Click in row 2 of the new column and add a vlookup formula.

    =VLOOKUP(A2,export2.xlsx!Table1[#Data],3, FALSE)

    This is saying find the value in column A in the table in spreadsheet 2 and return the value from column C. This will get us the current modified on for the record. Copy this to every line of the table in the original spreadsheet (making sure the row number references are correct).

  4. Copy the values in the new column and paste (values only) to column C, overwriting the existing modified on date values.
  5. Remove the new column and hide columns A-C, then save.

You should now be able to import the file and update the records.

Photo by Sam Mgrdichian on Unsplash

Share on FacebookTweet about this on TwitterShare on Google+

Tip #1040: Why Can We Stack Values in Workflow?

Back in the days when George Doubinski used configuration, he talked about using constants in workflows.However, this is only the tip of the configuration iceberg. Just above our Default Value box we can stack values for insertion into our field.

What does it mean to stack the values and what happens when we do?

When we update a record in a workflow and select a field to update, we see a box like the one on the right. In this scenario, I have selected the Send Email step in the workflow and clicked into the To field on the Form.

By adding a series of values into my Set To box, I create a simple form of branching logic which goes like this:

If the Student/Customer field has a value use this Else
If the Reported By field has a value use this Else
If the Owning User field has a value use this Else
Send it to Leon Tribe

A lot simpler than trying to explicitly set up If-Then statements using Workflow steps.

Share on FacebookTweet about this on TwitterShare on Google+