Disable Recent Records from Dynamics 365 Lookup Control | Model-Driven Apps [Quick Tip]

Let’s take a quick look on how you can disable the Recent Records from a Lookup Control in Model-Driven Apps

Scenario

By Default, here’s how the Recent Records are shown for a Lookup control –

And it’ll show all the Recent Records for the Entity

Form Settings

Here’s how you can disable the same in Form Settings for the Lookup Control –

  1. On the Field’s Properties, Disable this option called – Publish your changes and then check


  2. And then the Recent Option will be gone.

Hope this was useful!

Here are Canvas Power Apps / Model-Driven Apps which you might like –

  1. New App Designer for Model-Driven Apps | Power Platform
  2. Rich Text Control for Canvas and Model-Driven App | Quick Tip
  3. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  4. How to add Rating Values to Rating Models in D365 Field Service and PSA
  5. Language format for Whole Number field in Dynamics 365 CE
  6. Custom Help Pages and Guided Tasks for Unified Interface in Dynamics 365
  7. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  8. Show custom ribbon button based on Security Role of the logged in User in Dynamics 365 | Ribbon Workbench in XrmToolbox
  9. Duration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]
  10. Find deprecated JS code used in your Dynamics 365 environment | Dynamics 365 v9 JS Validator tool | XrmToolBox

Thank you!

Language format for Whole Number field in Dynamics 365 CE

If you create a Whole Number field in Dynamics 365 CE environment, you’ll notice a Format which is available for you to choose i.e. Language among other formats like None, Duration, Time Zone.

Let’s see what the field is and what it stores.

Language

  1. Let’s say you are creating a field on the Contact i.e. Preferred Language.


  2. And, it is represented in the below way – like a Drop Down



  3. Now, if you wonder which all Languages are displayed? Well, the ones which are Enabled for the D365 Organization are displayed in the Drop-down. They simply are set as data and doesn’t affect the record apart from the data value itself.

    So, if you go to the Settings > Languages


    Any other language apart from the Base Language of the Organization which is enabled is considered.


    You’ll find all the Microsoft Locale IDs here: https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms912047(v=winembedded.10)?WT.mc_id=DX-MVP-5003911

Data

Now, let’s see what the field stores.

  1. I’ve written a short JS to pick what the field has stored as data. When I debugged, here’s what the field holds.
    It stored


  2. Also, if you try to set data which is not enabled i.e. tried to set Language which is not enabled for your Dynamics 365, you’ll see the below validation error which says that the value is out of the allowed range.

Hope this post was useful!

Here are some more posts for Dynamics 365 Customer Engagement / CRM you might find useful!

  1. Custom Help Pages and Guided Tasks for Unified Interface in Dynamics 365
  2. Make Managed fields Required in Dynamics 365 – Managed Properties Error [Workaround] | D365 CE Quick Tip
  3. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power Platform
  4. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  5. Duration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]
  6. Show custom ribbon button based on Security Role of the logged in User in Dynamics 365 | Ribbon Workbench in XrmToolbox
  7. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  8. Connecting XrmToolBox to an MFA enabled Dynamics 365 environment | Azure AD
  9. Make On-Demand Flow to show up in Dynamics 365 | Power Automate
  10. Find deprecated JS code used in your Dynamics 365 environment | Dynamics 365 v9 JS Validator tool | XrmToolBox

Thank you!!

Custom Help Pages and Guided Tasks for Unified Interface in Dynamics 365

Formerly, Learning Path – A complete new overhaul for guided help is Custom Help Panes in Dynamics 365



Enable Custom Help Panes

Access your System Settings for enabling this feature in your organization –

  1. Go to Settings > Administration > System Settings. Then switch “Enable Custom Help Panes and Guided Tasks” to Yes if already set to No.


Creating Custom Help Panes

Let’s see how you can configure these Custom Help Panes in your Dynamics 365 CE environment for different environments –

  1. For example, for Contact entity, if you navigate to the Question Mark option on your top navigation bar, a Custom Pane will show up. If the above System Settings is not turned on, it’ll navigate to Microsoft Docs instead.

  2. It’ll expand the Pane as follows. You can then click on the three vertical dots as shown and click on Edit –

  3. Once you Edit, you’ll open the Custom Help Pane editor on which you can start configuring the Help Pane.
    You can Start Editing the Pane. You can start by entering the Title and then move down to add different Help items to the Pane.

  4. Now, I’ve added Title of the Page to Contact Help. You’ll see Save button at the button where you can Save the progress. Now, I’ll go to Insert and add a Section.
    The first item is Insert a Section.


  5. Open clicking Insert Section, I can add a title to it. Now, I’ll label this section as General.
    And it will appear as below.



    Now, you can click inside the General section and can add rest of the items there.

  6. Next, I’ll insert a Link into the General section.


    And I’ll complete the below Info for the Link.


    It’ll appear as below –

  7. Next, I’ll Edit the Pane again. And select Coachmark.


    And add Coachmark details as follows –


    Now, you can drag to where the Coachmark should be highlighted when clicked.

    Now, when you click on the generated Link, the coachmark will prompt.


  8. Next, let’s insert a Balloon.


    Enter details on the Balloon like the Link title, actual Title as it should appear on the Balloon and the Details it should read out. Finally, drag the Balloon to the element.


    And here it drag it to a relevant field.


    And finally, when the link is clicked in the Pane, the Balloon will appear as below.







  9. Next, Let’s insert a Video.


    And enter the URL of the video and set preferences accordingly.


    Once Inserted, it’ll look like below.


  10. Now, the final Items which we will insert here is an Image.


    And it’ll ask me for a Image URL which is accessible over the Internet.


    And it’ll appear as below –





    I’ve also added a YouTube video explaining the above steps in case anything from the above was not already clear –

Help Page record

In Dynamics 365, the Help Page record looks as follows if you do an Advanced Find –


You can even move this between environments within solutions itself. You can test this out in the new make.powerapps.com Solutions and Add an Existing Help Page as shown below –

Hope this was helpful!

Here are more Dynamics 365 CE/CRM posts you might want to check out –

  1. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power Platform
  2. Make Managed fields Required in Dynamics 365 – Managed Properties Error [Workaround] | D365 CE Quick Tip
  3. Sign up for a Dynamics 365 Project Operations (Lite Deployment) environment and provision a new instance | Power PlatformFilter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  4. Duration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]
  5. Show custom ribbon button based on Security Role of the logged in User in Dynamics 365 | Ribbon Workbench in XrmToolbox
  6. Connecting XrmToolBox to an MFA enabled Dynamics 365 environment | Azure AD
  7. Form Access Checker in new Power Apps Form Designer | Model-Driven Apps in Dynamics 365
  8. Use Rich-Text Control for Multiple Lines of Text in Dynamics 365 CE | Quick Tip
  9. Ribbon button visibility based on a field value in Dynamics 365 | Ribbon Workbench
  10. Find deprecated JS code used in your Dynamics 365 environment | Dynamics 365 v9 JS Validator tool | XrmToolBox
  11. Make On-Demand Flow to show up in Dynamics 365 | Power Automate
  12. Track and Set Regarding are disabled for Appointments in Dynamics 365 App For Outlook message | Demystified

Thank you!!

Make Managed fields Required in Dynamics 365 – Managed Properties Error [Workaround] | D365 CE Quick Tip

On some instances, there are Managed fields in Dynamics 365 CRM (or CE if you want to call it) where we can’t change the required level of the field from Fields i.e. on the database level. And you get the below error –

Here’s an alternative way to do it.

Scenario

Let’s consider this scenario.

  1. Although Microsoft suggests you don’t change the behavior of Managed fields since they are designed with a purpose. However, let’s consider this scenario where you want to make the Parent Account for Lead as required on the form.
    When you try to change the Requirement Level as follows




  2. And while saving this change, you get this error.


    So how do we do it? Let’s see.

Workaround – Business Rule

Now, to overcome this particular scenario you can implement a simple Business Rule to make it required as follows –

  1. If the field can’t be made Required on a database level, you can make it required on the form using Business Rule. Here’s how you create your Business Rule.
    As the Business Rule starts with the condition, here’s the check you need to add in case the field value is not entered.


    The condition I used is as below – Check if Parent Account for lead Does Not Contain Data

  2. If this is True, then go ahead and add a Step for True condition. Add Set Business Requirement Level

  3. And in this, you need to set the Business Required Status to Business Required as show below.

  4. And the result is the Business Rule which looks like in #1 above. Now, save your changes, Publish the Rule, Activate and check.
  5. The result will be that the field is not required once it doesn’t have data forcing the user to enter data for the same.

Hope this was helpful! Here are some more D365 posts which you might be interested in –

  1. Filter records in a View owned by a Team you are a member of | Dynamics 365 CRM
  2. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  3. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  4. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  5. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  6. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  7. Enable/Disable the need to Approve Email for Mailboxes in Dynamics 365 CRM CE
  8. Call Azure Function from Dynamics 365 CRM using Webhooks
  9. Show Ribbon button only on record selection in Dynamics CRM
  10. Accessing multiple occurrences of a field in Business Process Flow using JS in D365 CRM

Thank you!!

Duration field in Dynamics 365 converts Hours value to Days in Dynamics 365 | [Flow Workaround to convert in Hours and Mins]

This must be one of the most common scenarios Dynamics 365 Users must’ve come across. The Whole Number’s Duration field shows Duration in Days once it crosses 24 hours, it shows the Duration in Days. Like below –

And once you leave the control, it’ll be converted to it’s equivalent Days conversion

But if you click on it, you can in fact see the Hours

However, It’s not ideal to click on the field and check the Hours on the form. Also, this doesn’t work in case the field is seem from a View on the entity. Unfortunately, we can’t change this behavior. So, to have a workaround, I created a new field to store the translated value.

Hope this implementation is useful to you. In case of any better ideas, kindly suggest in the comments and I’ll be happy to update this post in order to serve full purpose. 😊
To understand the core conversion using long division, refer this post – https://www.calculatorsoup.com/calculators/conversions/minutes-to-hours.php

New Single Line of Text Field and a Flow

Let’s look at how the implementation is –

We’ll need to also review the following Logic Apps’ Math Functions to understand how to apply them – https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#math-functions?WT.mc_id=DX-MVP-5003911

Also, to understand how to read data from triggerOutputs(), check this post – Using triggerBody() / triggerOutput() to read CDS trigger metadata attributes in a Flow | Power Automate

  1. I’ve created a new Single Line of Text field called as Time In Hours (cf_timeinhours) which will hold the translated Hours & Minutes. Making the field as Read-Only is recommended so that no one changes it on the form post update.


  2. Now, here’s a Flow (You can configure it either on demand for existing records of on Create/Update of the Duration field which itself to calculate once the value is changed field). Just for example’s sake, my field is on Contact and hence, I’m triggering the Flow on Update of the contact on the change of the Avg Turnaround Time (Whole Number of format Duration) field.


    See, that the Body of the step will have the Avg Turnaround Time field storing the duration in minutes.


  3. First actions is to use Divide to get the Hours. I’m creating a variable called as Divide To Get Hours of type Float.


    Here’s how the div function included above looks like –



    Formula is: div(triggerOutputs()?['body/cf_avgturnaroundtime'],60)
    Explanation: Duration field in Dynamics 365 stores Minutes. First, we divide these minutes by 60 to get the Hours value.
    If you divide 3375/60, you get 56.25. But the Div will give you the Integer value. (The right way to divide to get exact float is to also store the 60 in a variable and then work with variables. See this post https://powerusers.microsoft.com/t5/General-Power-Automate/How-to-receive-decimal-number-result-after-dividing/td-p/195399) However, in this case, we anyway need to 56 part, so this is fine for now.

  4. Next, we’ll multiply the result of the Hours we got from the step above i.e. Divide to Get Hours.


    Here’s how the Mul function looks –


    Formula is: mul(60,int(variables('Divide to Get Hours')))
    Explanation: Now, we multiple the result of the Divide to Get Hours. This will be used to subtract from the actual value of Avg Turnaround Time field.
    Here, we multiple 60 x 56 = 3360 and get 3360

  5. Finally, to get Minutes, we use the third variable that uses a Sub function


    The Sub function looks like below –


    Formula is: sub(triggerOutputs()?['body/cf_avgturnaroundtime'], variables('Number to Subtract From'))
    Explanation: Now, we subtract the result of the Number To Subtract step from the value of the Duration field i.e. Avg Turnaround Time field itself. These will be the minutes.
    Now, to get the minutes we subtract the result of the Number to Subtract from the actual minutes value of the duration field i.e. 3375 – 3360 = 15. These are your minutes!


  6. Final step is to simply arrange it in a String (you can also form the string elsewhere directly and skip the below)

  7. And to make sense of this conversion, I’ll update the field on the record to show what the converted Hours and Minutes is.

  8. Here’s the final result once the Flow runs successfully.

Hope this helps! You might always want to check more Power Automate / Dynamics 365 posts –

  1. Office 365 Outlook connector in Cloud Flows showing Invalid Connection error | Power Automate
  2. FormatDateTime function in a Flow | Power Automate
  3. Formatting Approvals’ Details in Cloud Flows | Power Automate
  4. Trigger Conditions not working in a Cloud Flow? Here’s Why | Power Automate Quick Tip
  5. Read OptionSet Labels from CDS/Dataverse Triggers or Action Steps in a Flow | Power Automate
  6. InvalidWorkflowTriggerName or InvalidWorkflowRunActionName error in saving Cloud Flows | Power Automate Quick Tip
  7. Store ‘Today’s Date’ in a field to use in workflow conditions in D365 CE
  8. Create a Team, add Members in Microsoft Teams upon Project and Team Members creation in PSA / Project Operations | Power Automate
  9. Setting Lookup in a Flow CDS Connector: Classic vs. Current Environment connector | Power Automate Quick Tip
  10. Using outputs() function and JSON Parse to read data from missing dynamic value in a Flow | Power Automate
  11. Run As context in CDS (Current Environment) Flow Trigger | Power Automate
  12. Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists

Thank you!

Use Rich-Text Control for Multiple Lines of Text in Dynamics 365 CE | Quick Tip

With the addition of the Rich Text Control, your Multiple Lines of Text field can make a lot more sense than before.

Standard Control

Your usual control for Multiple Lines of Text looks like this

Rich Text Control

Now, you can turn this into a Rich Text Editor
Here’s how you do it –

  1. Go to the Multiple Lines of Text field, in this case, Description field.
    select the inner control and click on Properties


  2. Now, look for Controls tab and click on Add Control as shown below

  3. Look for Rich Text Editor Control

  4. Make sure you select the new Control on all formats (or wherever you want to apply)

  5. Once you apply changes and publish, the new Control will be available for you to use.


Hope this was useful. Here are some more Dynamic 365 posts which you might want to check –

  1. Ribbon button visibility based on a field value in Dynamics 365 | Ribbon Workbench
  2. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  3. Make On-Demand Flow to show up in Dynamics 365 | Power Automate
  4. Find deprecated JS code used in your Dynamics 365 environment | Dynamics 365 v9 JS Validator tool | XrmToolBox
  5. Remove ‘This Email has been blocked due to potentially harmful content.’ message in Dynamics 365 Emails | OrgDbSettings utility
  6. Track and Set Regarding are disabled for Appointments in Dynamics 365 App For Outlook message | Demystified
  7. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  8. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  9. Pass Execution Context to JS Script function as a parameter from a Ribbon button in Dynamics 365 | Ribbon Workbench
  10. Find Created On date of solution components in Solution Layers | Dynamics 365 [Quick Tip]

Thank you!

Remove ‘This Email has been blocked due to potentially harmful content.’ message in Dynamics 365 Emails | OrgDbSettings utility

It’s annoying to see this message on every email you Track in Dynamics 365 and just how it takes all the critical space on your timeline instead of showing you the actual email message.


Let’s look at how we can disable it using OrgDbSettings tool.

Note: I wouldn’t recommended to do these changes since we are looking to by-pass security flags dictated by Microsoft for your Org. However, if you really need to so, make sure you’ve backed up your Org before proceeding.

OrgDbSettings Editor Tool [Managed Solution]

You can download OrgDbSettings Managed Solution Utility from here – https://github.com/seanmcne/OrgDbOrgSettings

The link highlighted above is where the Releases are: https://github.com/seanmcne/OrgDbOrgSettings/releases

Once you download the Managed Solution, import it in your Org

  1. Once Imported in Dynamics, it appears like this in Solutions. Open it up.


  2. In the solution, look for SecuritySettingForEmail. Click once on the row to reveal the Description at the bottom, you’ll see the legends of what each value means.
    It’s defaulted to 1, meaning, you’ll see the warning which is what we want to hide.


  3. Next, double click on the Row and on the 1 which is the Default value as shown below.

  4. It’ll open up a Dialog to set your value of choice. In our case, we can to hide it, so I’ll put the value 3 and click on Update as shown below.

  5. It’ll update in a few seconds and you can refresh and see, the warning will be gone.



Hope this is helpful! Here are some more Dynamics 365 CE related posts you might want to check –

  1. Get GUID of the current View in Dynamics 365 CRM JS from ribbon button | Ribbon Workbench
  2. Get Dynamics 365 field metadata in a Canvas App using DataSourceInfo function | Common Data Service
  3. Dynamics 365 App For Outlook missing on SiteMap in CRM? Use shortcut link [Quick Tip]
  4. Pass Execution Context to JS Script function as a parameter from a Ribbon button in Dynamics 365 | Ribbon Workbench
  5. Find Created On date of solution components in Solution Layers | Dynamics 365 [Quick Tip]
  6. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  7. Add multiple Opportunity Products at once in Dynamics 365 Sales | Enhanced Experience [Preview]
  8. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  9. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  10. Dynamics 365 PSA v2 to v3 Upgrade failed? Here’s what to do.

Thank you!!

Find Created On date of solution components in Solution Layers | Dynamics 365 [Quick Tip]

If you’ve been using classic CRM since 2011 days until Solutions History came out (around 2018 timeline), we always wondered when was a certain field, view, form (component in general) was created.

It’s possible to see using Solution Layers

Example: When was a field created

Let’s say you want to find out when a field was created.

  1. Select the field, check for Solution Layer as shown below

  2. Now, go into the Active layer

  3. In Active layer, scroll down to the details

  4. You’ll be able to see the Created On field

  5. If there was a component/field that is too old and was created before this feature was introduced, it’ll show a default 1900 DateTime value

Looking elsewhere

I tried to look for this info in XrmToolBox’s Metadata Browser but couldn’t find it –

Please let me know if any better suggestions as well! 🙂

Here are some more Dynamics 365 CE / CRM related posts you might want to check –

  1. Dynamics 365 Solutions History – Keep track of your deployments
  2. Using ‘Clone a Patch’ & ‘Clone Solution’ in Dynamics 365 Solutions
  3. Add multiple Opportunity Products at once in Dynamics 365 Sales | Enhanced Experience [Preview]
  4. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  5. Mailbox Alerts Hide/Show behavior in Dynamics 365 CRM
  6. Excel Importing Notes (Annotation) entity in Dynamics 365 CRM
  7. Dynamics 365 PSA v2 to v3 Upgrade failed? Here’s what to do.
  8. Dynamics 365 Solutions’ New Experience in Power Apps, Solution Checker and more
  9. Check Managed Solution failures in Solution History in Dynamics 365 CRM
  10. Store ‘Today’s Date’ in a field to use in workflow conditions in D365 CE

Hope this was useful

Change Booking Status colors on Schedule Board for Field Service/PSA [Quick Tip]

Here’s a Quick Tip for everyone using Field Service and Project Service Automation. In case you are wondering how can you change the colors of the Booking Statuses on the Schedule Board for Field Service and PSA, here’s what you need to do.

Default Colors

This what your default Schedule Board looks like out-of-the-box.

Booking Statuses

Booking Status is an entity within which you can set this up.
You can navigate to Booking Statuses entity in your Field Service like below

There are these records you can modify. Also, for PSA, you have the same entity with different records for Booking Statuses
But, let’s look at Field Service’s example –

Now in each record, you can see in Common tab

And you can change by selecting this color picker control

And save the new selected color.

And let’s change for Completed as well, just another example – changed for Completed also to a greenish shade

Updated Colors

Now let’s look at the updated Schedule Board of how these colors look.

Hope this quick tip helps!

Here are some more PSA/Field Service posts you might want to look at –

  1. How to add Rating Values to Rating Models in D365 Field Service and PSA
  2. Why we see Cross Day in Work Hours on Bookable Resources/User?
  3. Modify Project tab’s view in Schedule Board in PSA v3 | Quick Tip
  4. Dynamics 365 PSA v2 to v3 Upgrade failed? Here’s what to do.
  5. Additional columns in PSA v3 Schedule view
  6. Update Price feature in D365 PSA v3
  7. A manager is required for non-project time entries, absence, and vacation error in D365 PSA v3
  8. Set Work Hours Template to a Bookable Resource in D365 PSA v3
  9. Booking Resources more than their capacity in D365 PSA v3
  10. PSA v3 View Custom Controls used on Project form

Thanks!

Add multiple Opportunity Products at once in Dynamics 365 Sales | Enhanced Experience [Preview]

Very easy tweak but this will save loads of your time. One of the most important asks by Salespeople is perhaps this – “Add multiple Products on Opportunity at once!

Here’s how you can do this –

Classic Experience

In current/classic experience, if you open Opportunity Lines and go on to add a Product as below –

It’ll either open in a New form.

This isn’t intuitive. You definitely need better experience.

Enhanced Experience

In System Settings, under Sales, you’ll need to enable the Adding Products to Yes. This will enable the enhanced experience.

  1. Now, when you click on Add Products in the Opportunity’s Product Line Items tab, you’ll see a Quick Create Form like form on which you can Add Multiple Products in one go.


    And then go to + Add products


  2. Now, a Quick Create form will appear on which you can select multiple products

  3. Now, when you click on any + sign in blue, you can directly enter what quantity you want to add.
  4. Also, if you go to the Selected section which indicated how many unique products you’ve added, you’ll be able to remove the added Products in case you don’t want them


    and then Delete the same if needed.

  5. Now, let’s say I have this finally and when I click on Add to Opportunity, they get added as Opportunity Lines


    And they appear as below

    Hope this helps!!

Here are some more D365 For Sales articles you might want to check out –

  1. Kanban view in Dynamics 365 Sales | 2020 Wave 1 Early Access Feature
  2. Territories enabled for OOB Hierarchical relationship in Sales Hub
  3. Create your own Insight Cards with Power Automate in Sales Insights
  4. Discount Settings for D365 Sales Line Items – Line Items or Per Unit?
  5. Talking Points in D365 AI For Sales
  6. Import lookup referencing records together in Dynamics 365 CRM | [Linking related entity data during Excel Import]
  7. Contextual Email communication in D365 CE Wave 2
  8. Customize Opportunity Close dialog box in D365 CE v9 Unified Interface – Wave 2 update
  9. Create & Send PDFs from Word Templates for Quotes in D365 CE Wave 2 Updates
  10. Save generated PDFs to SharePoint directly – 2020 Wave 1 | Early Access Feature

Thanks!