Opt-in for April 2019 Preview Updates

Finally, as scheduled on 1st Feb 2019, April 2019 Preview Updates can now be opted in for your organization.

Opting-in is available for Sandbox, Trail and Production environments.

Opt-In

  1. You can now go to https://admin.powerplatform.microsoft.com/ and look for the Organization on the left hand pane
    pPlatformEnv
  2. Select your Organization, look for Updates section on the bottom or right hand side
    manageOrgs
    Zoomed In
    zoomedManage

  3. Click on Activate now. Be careful, these changes can’t be undone.
    activateNow
  4. Enter your Org name and click Continue
    orgName
  5. And it will take some time to activate
    activating

 

And once you are set, you’ll see that the April 2019 update was applied –

aprilApplied

 

Happy D365’ing!

Linear Slider Custom Control in D365 v9.x UCI

Using Custom Controls is the new cool in Dynamics 365. Specifically, if visual cue of approximation or ‘to what extent’ is priority over the textual/numeric data, using Custom Control is the best way forward.

Something like this –

featured

Use Case

In my use case, I want to know the client budget so that I keep Quotes for them around the range they can afford.

Now, number will give me an idea. But a visual cue of the same will let me know the spending capacity of the client in the bigger picture.

So, I’ll use Linear Slider custom control on the Client Budget currency field to show a slider as well as the currency value.

Enabling Linear Slider on Currency Field

  1. So here, Client Budget (new_clientbudget) is my Currency type of field in D365.
  2. On the Form Editor, I’ll go to Properties of the field and go to Controls. Click on Add Control…
    addcontrol

  3. Select Linear Slider among others and click Add.
    addslider
  4. Then, I’ll set the properties of the control. Make sure you enable them for Web, Phone and Tablet as per your preferences.
    sliderproperties
  5. I’ve set the min and max range for the control, also that step which should reflect while moving the slider.
  6. Finally, click OK and publish changes.

 

Linear Slider

featured

You can even input custom number in the box and the slider will set to it.

manualnumber

 

Hope this was useful! 🙂

Thanks for reading.

Use Azure App Passwords for MFA enabled D365 authentication from Console App

If you have a Console App that authenticates to D365 using a credential (typically, an Administrator) but now the administrator is setup for Multi-Factor authentication, your Console App won’t work. So here’s what you can do.

If you first want to check out about enabling Multi-Factor Authentication, you can check my blog post on it here – Office 365 Admin: Quickly Enable Multi-factor authentication for users

Standard Authentication vs MFA enabled User

When there’s not MFA enabled for Dynamics 365 (Office 365) account credentials, you are able to connect to the organization with no issues and get the CRMServiceClient in your application easy.
authenticated

But, if you have Multi-Factor Authentication enabled for a credential that is used in Console Apps to connect to D365, the Console App will not connect and the CrmCerviceClient will have null as below with the error ‘Unable to Login to Dynamics CRM

unabletologin

Managing App Passwords on Azure Portal

Once you have multi-factor authentication enabled for your account, you can go to portal.azure.com and manage App Passwords as follows –

  1. In Azure Portal, go to your account settings.
    gotoaccount
  2. Then, go to Additional security verification
    additionalsecurityverification
  3. Look for App Passwords
    apppasswords
  4. You can manage and create more passwords here
    manageapppasswords
  5. Create a password if you don’t want to use a default one or want to use different passwords for different apps. Give it a suitable name and click Next
    createapppassword
  6. Copy the password as it is the only time it will be displayed.
    copypassowrd
  7. And you can see your passwords as you create them
    morepasswords

 

Implementing App Passwords in Console App

As the name suggests, App Passwords will let you create special passwords for applications to authenticate to Dynamics 365 without needing to go through multi-factor authentication like when you’re running a Console App to connect to Dynamics 365

  1. Go to the Password in the credentials in the App.Config of the Console Application
    oldpassword
  2. And replace it with the App Password
    newpassword
  3. Now, Build the application and run it. It will authenticate successfully.
    authenticated

Hope this helps! 🙂

 

Restrict User Access to a D365 instance using Security Groups

Use Case

You have multiple instances and you don’t want every member with a D365 license to be able to access each of those environments. How do you tackle this? Answer is using Security Groups on the Environments and Users.

Creating Security Group

In Office 365, create a Security Group and add members to it who should have access to the desired environment.

  1. Navigate to Groups in Office 365 and create a New Group. Give it a suitable name.
    creategroup
    groupname
  2. Add members to the Group who should have access. Click on Edit as shown below to Add members to the group and select the members and save it.
    editmembers
    addmembers
    membersadded
  3. Your Security Group is ready.
    securitygroupready

Apply Security Group to the D365 instance

  1. Navigate to Dynamics 365 Admin Center and select Edit on the instance you want to apply the Security Group on.
    editinstance
  2. Select the Security Group field and select the Security Group you created.
    selectsecuritygroup
  3. Click Next.
    clicknext
  4. Save once confirmed that you have selected the correct Security Group.
    saveinstance
    That’s it.

Who all can access the environment

All those are a part of the Security Group applied to the instance will have access to the environment including the Global Administrator
enabledusers

Rest of the users will be in the Disabled Users list
disabledusers

And if they try to access the environment, they will not be able to and will see this –
accessdenied

Hope that was easy! 🙂

Using ‘Clone a Patch’ & ‘Clone Solution’ in D365 Solutions

Doing incremental deployments from Sandbox to Production is a part of every other D365 implementation.

And when do this, typically, you just create a new solution for every single time you move things over. This creates a lot of mess and leaves your Solutions in unorganized dump!

Let’s see how we can stay organized by using Clone a Patch and Clone Solution to keep things synced and clean

Clone a Patch

Clone a Patch should be used when you don’t want parent dependencies in the solution all over again unless you want to change them. So, always use this when you want to add newer things to a previously existing solution.

  1. I have created MainSolution_1 as my main solution, the first time I started my customization. I added only 1 field, called Target Sale for demonstration purpose.
    mainsolution
  2. Now, let’s say I deployed it over, the next time I want to add some more functionality to the existing solution I deployed, I should not create another solution.
  3. Rather, I’ll use Clone a Patch as shown below.
    cloneapatch
  4. In Clone a Patch, I’ll keep the Display name same and the version number is configurable up to the last 2 sub-versions.
    clonepatchproperties
  5. So this is how my Patched solution will look.
    preparedclone
  6. In this solution, I’ll add another field called as Min Target To Achieve and deploy it over to Production, maybe.
    patchcontents

Clone Solution

Clone a Solution is used when you have a main solution and several patches. Clone a Solution will roll up everything into a new “parent” solution and remove every other solution of which you cloned including the source solution.

  1. I’m select MainSolution_1, the first main solution I had created with the field Target Sale field. And then I chose to Clone Solution.
    clonesolution
  2. Similar to Clone a Patch, I have now the version control over the first 2 version numbers and since it is the first Clone, the final numbers are 0.0. I named it MainSolution_1_Cloned.
    clonesolutionproperties
  3. It takes a few moments to Clone everything.
    inprogress
  4. Now, I have cloned the solution and the resultant solution has all the components from the Main Solution as well as from the Patch solution summed into 1 final solution.
    cloned
  5. Also, notice that all the other solutions including the MainSolution_1 from which I cloned this solution is deleted.
    cleanedsolutionsarea

Thereby, you have a clean Solutions area with all sorted work.
Hope this helps. 😊

D365 Quick Tip: Delete Records Imported by mistake

One of the most common blunders often made in Data Import are importing whole lot of records without finalizing.

And when you import, you realize you needed to add something more to the Import or some things were pending in the Excel file and you ended up uploading them all!

Delete Imported Records

  1. Assuming your Import was successful and you want to now just revert what all was imported, navigate to Settings > Data Management > Imports.
    importjob
  2. Open the Import job and look for the option under Delete which says ‘All Records Imported to This Entity During This Import
    mainaction
    There, quite self explanatory.
  3. Once you click on it, a Delete Job is triggered once you fill in the below information
    deletejobset
    Important: When I select ‘In addition to deleting imported records, also delete import job history’, it will also delete the Import Job I started in Step #1. If you still want to keep it, you can according to your personal preference.
  4. Now, when you go to Settings > Data Management > Bulk Record Deletion, find the Import you started in the step above.
    deletedrecords
    Note that there are 4 records deleted here though I imported 3 records. The additional record is of the Import Job deleted while setting up the Deletion job in step#3 above.

Hope this quick tip helps! 🙂

 

Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks

After 2 posts to trying to summarize Learning Paths, here we are to Guided Tasks which conclude this series. We will see D365’s early adopters can get acquainted with processes in your organization and getting them to know the system.

To check the other 2 posts – Please follow the below posts

  1. Setup – Use Learning Path for your D365 v9.x Organization – Part 1 | Setup
  2. Sidebar –Use Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

Configuring Guided Tasks

  1. Assuming you are already in Learning Path > Content Library. Select Guided Task.
    guidedTask
  2. Fill out the properties of the Guided Task like the name and how you want it to behave.
    guidedTaskProperties
  3. One you save, you get a Flow Editor where you can add 4 different types of Guided Task modal.
    flowEditor
  4. So, these 4 types of modals are available. Here’s what each of them do –
    1. Step with Next Button – Simple instruction in Text or Video and a Next Button
    2. Step with User action – Will make you click the button/action it is pinned to. And only then move forward.
    3. User Action with Next Button – This is a combination of A and B above. You can either select the action or skip to next step.
    4. Learning Step – It is like a tip and comes with a Button that can open another Learning Path Published item. Like, Sidebar in my case.
      stepTypes
  5. When you drag either of the above onto the screen, the D365 screen is highlighted with areas where you can drop it and it gets pinned to that item.
    skeleton
  6. On each of the types of modals, you get to either enter Text or add a Video.
    contentTypes
  7. For Learning Step modal, you get to also configure what will open when user clicks Learn More.
    learnMoreEditor
  8. In my case, I’ve opened the existing Sidebar from Part 2 of the blog series.
    sideBar

Finally, my track looks like this –

track

Previewing and Publishing

  1. Once you are done editing, Save your changes and Check In your changes.
    confirmCheckin
  2. Once you proceed, you’ll be asked in the same way as Sidebar to specify which all environments you want to publish this to.
    envSelect
  3. On publishing, you’ll see this notification.
    published

Seeing Guided Tasks Work

    1. Step with Next Button.
      stepWithNextButton
    2. Step with User Action (Notice that it doesn’t have a Next button but is asking you to click on the Gear Icon)
      userAction
    3. User Action with Next button, either of which will take you to the next step.
      nextUserButton
    4. Learning Step (Clicking on Learn More will open the Sidebar on the right hand side)
      learningStep
    5. Sidebar showed up on clicking Learn More from Step 4 above.
      LearnMoreSidebar

Hereby, I conclude Learning Task. I tried to keep it as short as possible. But then, lots of screenshots.

To summarize, you can read previous blogs in this series
1. Setup – Use Learning Path for your D365 v9.x Organization – Part 1 | Setup
2. Sidebar – Use Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

Hope this gets you through Learning Path quickly! 🙂

 

Use Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

Sidebar is a component in Learning Path where you can design a Sidebar that appears like a tray popping from the right side of the screen. You can have quick help items in it so that new users to D365 can use it to get help on the most frequently requested items in your Organization.

Before you begin, you can check my post i.e. Part 1 post of this series on setting up Learning Path in D365 – Use Learning Path for your D365 v9.x Organization – Part 1 | Setup

Also, check out Guided Tasks in this blog post – Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks

In my last, I setup Learning Path in D365 Org, let’s take a look at designing one of the aspects of Learning Path i.e. Sidebar

Creating a Sidebar in Learning Path

  1. Assuming you have gone through the setup of Learning Path and you are now navigated in your Org to Training > Content Library. Content Library is open and you need to select Sidebar
    createSidebar
  2. On opening the same, you’ll be asked to set preferences of what should the details of the Sidebar be
    sidebarProp
  3. On clicking Save, a designer pane will open on the right hand side of the Page like so
    editorOpened

Designing your Sidebar

Now, let’s put a few items on the Sidebar and publish it to see how it looks

  1. I’ve given a suitable Title to my sidebar, I’ll call it CFT117 Helpdesk for now. Then, when I want to first item, I’ll click on Section #1 below that and a Pencil and Delete icon will appear. I will select the Pencil Icon to start editing my first section
    editingSection1
  2. On clicking the Pencil, a menu to show what all I can add appears, for example, I select List of Links (I will just give link to a website here)
    selectContent1
  3. Once I select List of Links, editor to add Links will appear. I’ve given a title to it called as Visit Company Website and I’ll select + Add Link as shown below
    addLink
  4. After clicking on Add Link as in #3 above, I get options to specify what the link will do. For example, I’ll select Webpage since I want to redirect to the company website
    defineLink
    linkDetails
  5. After I click Next, the first Link will be set and will appear like this.
    linkSet
  6. Next, I’ll select to add a Video (you can select what you want to show in subsequent sections as mentioned in step #2 above).
    So, I’ve given a title ‘Using PSA’ and entered the URL of the video I wanted to show. Finally, my section will look like this
    videoProperties
  7. After everything is done, I’ll click on Save
    saveSidebar

Publishing Changes

  1. Next, on the button left, you can select Preview.
    preview
  2. Once someone clicks help, this is how the pane will look. Finally, if you’ve decided to publish it, you can click on Publish button on the bottom left
    previewShown
  3. And you can select which all Orgs you want to publish this Sidebar to –
    publishControls
  4. On confirmation, it will tell you that the content has been published successfully.
    published

Using Sidebar

Now, our Sidebar is ready. And once the user clicks on the Help Icon on the top right as shown below –
clickHelp

They’ll see the Sidebar as you designed
sidebarDisplayed

 

Excuse me for the unusually lengthy post. Hope this helps! Learning Path – Part 3 – Guided Tasks has been published too – Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks!

Use Learning Path for your D365 v9.x Organization – Part 1 | Setup

Learning Path an intuitive feature as compared to Customized Help. Customized Help will take you to an entirely different section whereas Learning Path will guide you through the application when you use the system. This is a multi-part blog series which will walk-through the setup of Learning Path and use of Guided Task and Sidebar in Learning Path.

Also, I’ve you’ve already setup Learning Path on your org, you can read my post on using Sidebars in Learning Path – Use Learning Path Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

And Guided Tasks is here – Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks

Learning Path is available on Customer Engagement and the organization must be on D365 December 2016 Update or later.

Let’s look at how you can enable this for your Organization

Opt-In for Learning Path

  1. First step is to go to Settings > Administration > System Settings. Under General Tab, find ‘Enable Learning Path’ and ‘Enable Learning Path Authoring’. Make sure ‘Use custom Help for customizable entities’ is set to No.
    optIn
  2. When you chose to enable Authoring, a confirmation will be asked for your consent according to Microsoft policies.
    confirmAuthoring

Learning Path Authoring Group

  1. When you’ve opted in for Learning Path Authoring, and in your navigation you go to Training > Content Library under Learning Path.
    lpSiteMap
  2. But you’ll be treated with this message below because you’ve not yet been added to the Group in Office 365.
    lpError

Add to Learning Path Authoring Group in O365

  1. In your Office 365 Admin Center, navigate to Groups as shown below
    authoringGroupInO365
  2. And you should add the Sys Admin user to the Learning Path Author groups as shown below –
    adminAddedToGroup

    Sync Roles in Content Library

    When you’ve enabled Learning Path successfully, you will need to check which Security Roles are enabled in Learning Path designer. The content is shown to users based on the precedence of their security roles.

    1. Navigate to Content Library, you’ll find Configuration button on top as shown below –
      configApp
    2. Under configuration, you’ll see Sync Role button which will sync security roles with Customer Engagement security roles. You can set your precedence of Security Roles before you Sync Roles.
      syncRoles
    3. Click Yes to confirm, it takes a few minutes while it’s happening in the back end.
      confirmSync
    4. Upon completion, you’ll see this message and you know you’re done.
      syncDone
    5. Once everything is setup, you’ll be ready to use Guided Task and Sidebar in Learning Path which I’l be covering in further blog posts in this series.
      lpReady

     

Here’s Part 2 – Use Learning Path Learning Path for your D365 v9.x Organization – Part 2 | Sidebar

And Part 3 – Use Learning Path for your D365 v9.x Organization – Part 3 | Guided Tasks

Use setFormNotification (Client side JS) in D365 v9 while Real-Time workflow is executing

Often, when a real-time workflow is being executed in the background, users don’t know how long it will take for the processing to finish. setFormNotifications in D365 v9 come handy!

Scenario

Here’s how I put my scenario –

  1. I call the Real-Time workflow using JS, example, on change of a certain field or the JS being called from the Ribbon button.
  2. The JS will trigger the Real-Time workflow I have.

Now, while the Real-time workflow is running, the user doesn’t know it has been called and should the user retry the same action? Here’s when the form notification is vital.

While the processing is happening, the message will remain as a notification on the form. Once the processing is complete, the notification will be cleared.

JS Implementation

For the JS code implementation, the function to call the workflow needs ProcessJS which is available on https://github.com/PaulNieuwelaar/

  1. So on the Form, I’ll add my file after ProcessJS file.
    formProperties
  2. Here’s the Account Form code I wrote. I created a JS file to call the Real-Time workflow.
    jsCode
  3. In the above code, the Xrm.Page.ui.setFormNotification(Message, Type of notification, Unique Identifier); This will set the notification.
  4. Page.ui.clearFormNotification(UniqueIdentifier); will clear the notification from screen.
  5. Using this, When the Process enters in Processing mode, the message is shown on screen as “Please wait while processing”
    messageShown
  6. And once the execution is finished successfully, the notification is cleared.
    wfExecuted
    notificationCleared

Similarly, you can even use this approach for WebAPI calls and have clearFormNotification set in the Success/Failure callbacks.

Hope this helps!

BPF Process Stage Name not populating on records in D365 v9 [Deprecated] and workaround.

At times, users are unaware of the deprecation announced for D365 v9 version earlier in 2018 or simply, they’re not aware whether to look for deprecation announcements. One of the most common instances I’ve come across lately are when people complaining about the Process Stage Name entity not updating post the v9 update.

missingData

Deprecated Feature – Process

So when you try to add these columns in you entities’ views, you’ll see that StageID (Process Stage) is now shown as Deprecated.

deprecatedField

Read More About It Here

Here’s the Microsoft link where this is stated and other deprecations for upcoming D365 versions:

https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming#legacy-process-related-attributes-in-entities-are-deprecated

Alternative/Workaround

But, it is important that you also have a workaround at hand to keep the data up to date. Here’s a quick workaround to get the Stage Name.

  1. Create a custom Single Line of Text field on the entity that you need the Stage name on. In this case, Opportunity entity.
  2. Create a Real-time Workflow on the BPF entity itself. In this case, it was the Opportunity Sales Process BPF’s entity called as ‘Opportunity Sales Process’.
    wfCreate
  3. The workflow will be triggered when the Process is Applied and then Active Stage field is updated on the BPF.
    wfBody
  4. And in the Step, it will only update the Opportunity’s custom field to the Active Stage.
    wfUpdateStep
  5. That way, you can have the Stage Name data in your custom field and use that instead.
    populatedDate

 

Hope this helps! 🙂

 

 

Create a New Record button for Activity Type entity using Ribbon Workbench: D365

Problem

Typically, when you create a new Activity type of entity and you want a Create button for the same, it just appears in the Other Activities fly-out button and not on the Main ribbon in Activities to be specific.

currentProblem

And you can’t simply drag it out in the Ribbon Workbench since it is a dynamic button.

dynamicMenu

So, in this blog, I’ll create a button to open a new Create record form for my Activity type of entity called Assignment.

Customization

  1. Create a new Solution in your D365 environment and only add Activity entity into it.
    createSolution
  2. Load this solution into Ribbon Workbench and on the Main ribbon, add a button and give it a Name and Icon
    Note: Since there was no space in the Activity Ribbon, I had to sacrifice on of the least used Activities I had.
    sacrificeButton
  3. On that, I created a new Command and provided the below parameters –
    commandParameters
    Make sure you enter the name of your entity in String Parameter shown above correctly, in my case, it is new_assignment.
  4. Attach this Command to the Button
    mapButton
  5. Now Publish and check.

Create Assignment Button in Action

Now, when I go to Activities, I see my button called Assignments

buttonAppears

 

And when I click it, it open the full form for the Assignment entity

newForm

Hope this was quick!

Bringing back Maintain Bookings Availability View from D365 PSA 1.2.x into 2.4.x

Disclaimer: This is an experimental implementation and is not recommended out-of-the-box. My assumption is Microsoft would not provide support for anything that gets goes wrong while implementing this, with the original MS scripts or anything that intervenes with out-of-the-box functionality. Kindly implement at your own risk, do not change the existing out-of-the-box files and back up entities/files before any customization.

Maintain Bookings Schedule Board view in PSA 2.4.x?

Recently, I upgraded PSA from v1.2.x to v2.4.x. And I missed the classic Availability view of the Maintain Bookings of the older version. 2.4.x has the new Schedule Board approach.

Schedule Board based Maintain Bookings view as below
scheduleBoardView

Instead of the old Availability View from the v1.2.x version which looked like this –
availabilityView

Also, even other projects bookings were seen which wasn’t desired and editing the hours was added effort. Se let’s see what we can do her –

Pre-Requisites

  1. Knowledge of Ribbon Workbench in the XRMToolBox.
  2. Make sure you have any D365 environment having PSA in version 1.2.x. You’ll need the older ProjectTeamActions.js file from that version of D365 PSA 1.2.x.
    originalFile

Customization

  1. I prepared a new JS Web Resource (named it MyCustomProjectTeamActions) in the target PSA 2.4.x environment and added the code from the PSA 1.2.x’s PSA file ProjectTeamActions.js file referred in the Pre-Requisites section above
    customWebResource
  2. In the XRMToolBox, connect to the 1.2.x’s Specify Pattern button on the Team Member Sub-grid view, you can use that as a reference.
    longViewSpecifyPattern
    closeViewSpecifyPattern
  3. In your updated PSA 2.4.x’s Org, assuming you have copied the ProjectTeamActions.js from the older org to your custom Web Resource file in Step 1 above, you can prepare a new custom button next to the existing one and use your custom file instead on your button. I just called it ‘New Maintain Bookings’
    customMaintainBookingButton
    customWRInButton
  4. And Publish your changes. Then go to the Project’s Project Team Member view and see your new button work.

Seeing it Work

  1. Now your new button appears besides the current version’s Maintain Bookings.
    teamMemberView
  2. And that will bring up the Availability View for the Maintain Bookings on how it was in PSA 1.2.x
    availabilityView

Hope this helps you out too!

Talking Points in D365 AI For Sales

Overview

Talking Points is a D365 AI for Sales feature that helps you to start a conversation or bring in ice-breakers if you are going to communicate with a contact the next time.

It gives you highlights on the Contact form about what was communicated in the past and you can use that suggestion to bring it up in your conversation with the D365 Contact.

Talking Points works for the below topics –

Health, Family, Sports and Entertainment

Pre-Requisites

  1. The user who will use Talking Points must have Server Side Sync enabled for their mailbox.
  2. Make sure Analytics feature is enabled for your organization. You can find it in the Admin Center.
  3. Enable Sales AI in your D365 Organization. To learn more about Sales AI, check my post on enabling Sales AI for your Organization – Enable D365 AI For Sales in v9.1.x
  4. Turn on Talking Points by clicking on the check box
    selectTP
  5. And then clicking on Save button show on the top right corner of the screen.
    clickSave
  6. Once Talking Points preferences are saved, you can see what all you selected
    savedSettings
  7. Additionally, also make sure the card to display Talking Points is enabled on the Contact form.
    contactForm1
    visibleByDefault

Talking Points

Now, let’s see an example of it’s working.

  1. Priyesh sent me an email telling me that he’ll be late as he was at a Baseball game. And out of curiosity, asked if I follow Red Sox team.
    redSoxMail
  2. D365 AI For Sales’ Talking Points analyses the conversation and in D365’s Contact for Priyesh Wagh, shows this card telling me that Sports was being discussed/sent in the message
    talkingPoints
  3. So, if I am about to talk to Priyesh and I am looking at the D365 Contact before I speak, Talking Points can tell me what else I can talk about apart from just work.
  4. It’s a great functionality to give a more personal touch to the conversation than just discussing work, maybe.

    Enjoy exploring Talking Points.

Enable entities for Dynamics 365 App For Outlook

So, you’re all set to use D365 App For Outlook from your OWA (Outlook Web App) or even from your Desktop client. Let’s look into enabling any given entity (predefined or custom) to show up while searching in the D365 App For Outlook

Let’s say, you have these entities already enabled when you recently setup the App
noEntityDisplayed

And you don’t have your custom entity, say, Customer Subscriptions enabled yet. So let’s set that up.
actualEntity

Pre-Requisites

  1. Make sure the users’ mailbox is synced using Server Side Sync and they have been enabled to use D365 App For Outlook.
    addToApp
    You can see the above settings from Settings > Dynamics 365 App For Outlook as shown below –
    D365AppOnSiteMap
  2. Make sure the Entity is already enabled for Activities so that it can be used to track records against.
    enableActivities
    Note: I also read on other blogs stating that the entity should also be present in the Categorized Search under Settings > Administration > System Settings – General Tab. But this worked for me without it.

Enable entity for D365 App For Outlook

Now, let’s enable Customer Subscriptions to be available in the D365 App For Outlook

  1. We will need to add it in the D365 App For Outlook itself. Navigate to Settings > My Apps as shown below
    myAppsIf My Apps is missing from your SiteMap, you can refer to my blog for using the shortcut link to access it – ‘My Apps’ missing from D365 SiteMap
  2. In My Apps, find Dynamics 365 App For Outlook app and open it in the App Designer as shown
    openInAppDesigner
  3. Once you open it, on the right hand side, expand Entities
    artifactEntities
  4. Find that Customer Subscriptions (or your entity which you wish to enable) is not enabled yet.
    entityInAppFound
  5. Enable it by clicking the checkbox. It will now appear in blue and selected
    entityInAppEnabled
  6. It will also appear on the left hand side now
    entityInLeftSide
  7. Simply Save and Publish the changes.
    publishChanges

Entity is Enabled

In your Outlook (OWA of Outlook client app), when you restart or re-open open the app, you’ll see that the entity is enabled as below and you can use it to search and track records against.
entityIsEnabled

And we are done. 🙂

Enable Embedded Intelligence and configure its features in D365 v9.1

Embedded Intelligence you features like Relationship Assistant, Auto Capture and Email Engagement. Yes, you’ve seen them before in previous D365 versions and configuring them got easier in D365 v9.1

Read Policy and Accept Terms

  1. Navigate to Settings > Sales AI. Under Overview tab, click on I accept as shown below.
    acceptTerms
    Note: Make sure you read the Privacy Statement if and whether or not it violates your organization’s privacy policies.2. Once Accepted, features like Relationship Assistant, Email Engagement and Auto Capture are available to be configured as follows
    EITurnedOn

Relationship Assistant

Relationship Assistant helps you to draw your attention to what matters about the information in Dynamics 365 at that moment.

It shows you Action Cards that are relevant to the user at the given point of time and where the users can quickly take some common actions associated with it. need to take action on and are relevant given at the point of time.

Example, if an Opportunity is due tomorrow, the Relationship Assistant will show up on the Opportunity and show you this.

relationshipAssistant

Configure – Relationship Assistant
You can configure the Relationship assistant on the next tab in Sales AI itself.
configureRA

 

Email Engagement

Email Engagement will tell you how your communication is being taking shape. Track insights about the emails you send from D365 and accordingly, take your next move.

Like, you can set a reminder to follow up and track what happened to the email you sent.
emailEngagement

Configure – Email Engagement
1. Turn on Email Engagement by simply clicking on the Disabled button to Enable it.
disabledEE

2. Email engagement is turned on now.
EETurnedOn

 

Auto Capture

Get a glance of emails relevant to your D365 records but which aren’t actually tracked in D365 . You can then decide if it matters for you to pull it in D365.

autoCapture

Configure – Auto Capture
All you need is to enable Server Side Sync with your Exchange Online mailbox.

 

Hope I summarized the idea! 🙂

Enable D365 For Teams Integration Preview

Finally, D365 Teams Integration is out in Public Preview and I was excited to try it out on one of the D365 9.1 trial environments.

Currently in Preview so it is not recommended for Production purposes. Anyway, let’s dive into seeing how we can enable the Preview.

Enable the Preview in D365

  1. Enable the Preview of the D365 For Teams from System Settings > Previews.
    systemSettings
  2. And click on Yes to enable it. It will ask for confirmation.
    settingConfirmation
  3. Click OK and it will ask for confirmation
    applyConfirmation
  4. And it takes a few minutes to provision.
    provisionTeams
  5. And in a few minutes, you’d be done.
    provisioned

Logging into Teams and get the App

  1. Now, suppose you already have Teams app on your desktop. Go to Store and look for the Dynamics 365 (Preview) as shown below.
    getInTeamsApp
  2. Click on Add to a Team to disable it and only enabled it for me. Maybe I’ll write another post on what these settings do, but to continue for myself, I’ll select only Me.
    addForMe
  3. And if you wish to open any of those, else close out the window.
    previewAvailable
  4. Now, let’s configure this for first time use. Find the app in the menu like so.
    findTheAppInTeams

Configure the App

  1. Now, let’s configure it by connecting to your D365 environment. Click on Configure.
    configureNow
  2. It will ask you Organization you want to connect to, select the same.
    selectOrg
  3. And provide your credentials –
    credentials.png
  4. Grant consent too.
    grantConsent
  5. Finally, you’ll get it enabled.
    enabledNow

Seeing it work

And to test it out, I put in natural langauge ‘show me alpine sky house’

And I had the results
results

D365 AI for Sales: Notes Analysis feature

Turn on Notes Analysis

Make sure you’ve enabled D365 AI For Sales for your organization. For more information on enabling D365 AI For Sales, check my blog on Enable Dynamics 365 AI for Sales in v9.1.x

You can turn on Notes Analysis once your D365 AI For Sales is setup. Navigate to Settings > Sales AI and look for Notes Analysis and turn it on like so if it appears Disabled –

enableNotesAnalysis

Simply turn it on.

Notes Analysis at work

Remember, you’ll need to have the Timeline control enabled in you D365 Unified Interface. Timeline control is available for Contacts, Opportunities, Leads, Accounts and Case forms (COLAC).

Now, with a normal Note put on Accounts in the Timeline, you’ll see this – where you have your usual Note entered and it appears that it isn’t clickable.

normalNote

But, with the Notes Analysis turned on, you’ll be able to perform Actions on the same.

noteAnalysisRecord

The Note is now a clickable link and once you click on it, based on the context of the Note entered, it will show actionable item to be performed.

 

Notes Analysis can provide suggestions like creating activities, tasks, contacts etc. I’ll keep exploring what else it can do and let you all know!

D365 PSA: Delegated Resource gets error on making time entries for another Resource

Have you been added as a Delegate for a fellow colleague but not able to Read, Create or Submit Time Entries on their behalf?

Let’s see what you are missing.

Before that, if you want to learn about Delegations in D365 PSA, check this Delegating Time Entries in PSA

Scenario

William Contoso wants to make Veronica Quek as his Delegate and let her enter time on his behalf. So William created a Delegate record for Veronica.
delegateAdded

Error for the Delegate Resource

Now, Veronica is attempting to do time entries for William by going to Time Entry Calendar view and switching the user to William.

  1. And when Veronica wants to enter time as William, she’d switch to the User on the Time Entries Calendar View like this –
    switchUser
  2. But, see this error and she don’t know what the issue might be. Even though she’s the Delegate!
    error

Missing Security Role

Yes, this is the first thing you should check

  1. Veronica Quek is missing a Delegate Security Role in PSA to be able to make time entries on behalf of other users.
    Assign Delegate security role to the user to make them enter time on behalf of others.
    securityDelegate

Hoping this is quick fix for you. 🙂

 

D365 Quick Tip – Why should you Reassign Records to another user?

An underrated feature of Dynamics 365 sitting since a long time is the Reassign Records. This is a particularly important feature that if a key person stayed with the organization for quite some time and worked deeper in Dynamics like written plugins or have workflows owned by them, it is imperative that the records they owned need to be reassigned to someone else when that employee leaves.

Given the scenario – An employee, Somesh, left the company but has several records under his ownership. Even some workflows (we’ll get to that a little further.) Sample Original Records owned by the user –
originalRecords

And when the user leaves the company, in general practice, we revoke the D365 license for reuse. In that case, the user is Disabled in the system –

disabledUser

Important: Before you proceed further, please make a list of all Active workflows which are owned by the Disabled user before Reassigning Records. You can use Advanced Find to find such workflows.

Why should you Reassign Records

Workflows

Since the user who left was owner of any workflows having Scope of Organization level, they’d fail and if them being background workflows, you wouldn’t know what happened in the background. On investigating, you’d see error like –

errorInWorkflow

I noticed that workflows which are set to User scope will behave like they didn’t trigger.

Reassign Records

Use this feature to reassign records of the Disabled User to the new Administrator/User who should carry forward the smooth processing of day to day operations of Dynamics.

  1. Go to the user by going to Settings > Security > Users. Find the user and open the record.
    reassignRecords

  2. On clicking on Reassign Records as shown above, you’ll be asked whether you want to assign the records to yourself or some other user.
    reAssignToOtherUser
  3. The loading will complete and once you check, all the records that were previously with Somesh will be assigned to Vishal. See below –

    assignedToNewUser

  4. The workflows get assigned too. But, you have to do some activity before you say you’re done.

Reactive the Workflows

So, the records got swiftly got assigned to the new user. However, the workflow which Somesh owned were Deactivated, assigned to Vishal but were left Deactivated!
deactivatedWorkflows

And with that, you’ve saved some hours trying to find out why certain things went wrong. Hope this helped!

Enable Dynamics 365 AI for Sales in v9.1.x

One of the recent offerings by Microsoft is D365 AI For Sales. I saw this available on my D365 Trial instance which is 9.1.x.

I will quickly summarize on how you can enable D365 AI For Sales on your D365 environment having any of the Sales subscriptions.

d365Version

It has features like –

  1. Relationship Analytics
  2. Predictive Lead Scoring
  3. Predictive Opportunity Scoring
  4. Connecting Insights

More about which, you can read from the Microsoft Documentation – https://docs.microsoft.com/en-us/dynamics365/ai/sales/help-hub

Before we begin

  1. D365 AI For Sales is only available in the (NAM) North America region.
  2. You’ll need a D365 AI For Sales license for the same.

Check if Sales AI is available

Quickly, you can check your Settings area if you already see the Sales AI appears or not.
settingsArea

Or you can simply go to the below link to setup a trial for yourself –

https://dynamics.microsoft.com/en-us/ai/sales/

Or even from the Applications screen in the Dynamics 365 Admin Center –

adminCenterOption

Setup

  1. Let’s assume you’re on this page after you go to Settings > Sales AI. You can accept the terms to enable the Embedded Intelligence or even chose to do so later.
    embeddedIntelligence
  2. Moving further, I chose to directly enable the D365 AI for Sales by scrolling further and clicking on Get it now as shown below.
    aiGetItNow
  3. Then, I provided consent and Accepted.
    acceptConsent
  4. Agree to terms and click on Continue.
    clickContinue
  5. While it’s installing, you’ll see this –
    installing
  6. It took about a few hours until it was being setup in the background. Finally, once successfully done, D365 AI For Sales is now available for you to setup and you’ll see multiple tabs where you can configure each of the functionalities separately.
    aiEnabledYou can then choose to configure each of them separately. Hope this quick initial setup info helps!

Customize Time Entry form on Calendar View for D365 PSA

Many times, users come back requesting that they need to be able to add types of time entries of their own. Sure, you can modify the Time Entry Type OptionSet that comes with D365 PSA by default. But that will only reflect on D365 Form Level and not where users go to Calendar View to enter time.

Microsoft has provided to be able to customize the Time Entry form on Calendar View too. This feature was released in the PSA release v1.2.1.51
msRelease

Check here – https://blogs.msdn.microsoft.com/crm/2017/07/14/dynamics-365-for-field-service-and-project-services-automation-update-3/

Customization

I’ve added an option called as Comp-Off for the available types of Time Entries OptionSet.
timeEntryOS

But, this is only reflected on the Form level of Time Entry entity and not on the Calendar View. On the Calendar View, it continues to show as below –

defaultTypes

Hence, you’ll need to make changes to the TimeEntryType.js file provided by Microsoft out-of-the-box.

Here’s the script that comes out-of-the-box which Microsoft says you can change to customize –

  1. To make changes, look for this file – “msdyn_/Common/Models/OptionSets/TimeEntryType.js
    jsInSolution
    jsWebRes
  2. Modify this file. By default, it will have this script as shown below –
    defaultScript
  3. So, I added just this one line and mapped it to the OptionSet I created. The value should match the OptionSet value entered in the Time Entry Type OptionSet.
    lineAdded
  4. Save and Publish changes. Check if your new option appears as shown below –
    modifiedCalendarView

Remember: The Calendar View to enter time entries has been deprecated in v3 of PSA. So this customization will not be needed in versions 3.x onward.

I hope this was helpful.

Also,

D365 Quick Tip: Bulk Clear field values

A very handy approach for admins and users of Dynamics 365 who want to bulk clean up field values – And just selecting them in Bulk Editing them as shown below doesn’t help!!

So here’s the scenario – You want to clear the selected records for their Credit Score field
containsData

Because primarily, you can commonly put a value in a field using Bulk Edit, but not clear the value.

 

Workaround

What you can do instead, create a quick and simple workflow to clear the field.

  1. Create an On-Demand workflow on Contact entity with an Update step for Contact
    workflowBody
  2. In the Update step, point to the field and then select the Operator on the right hand side to select Clear
    operator
  3. Make sure the Clear appears on the field you want to Bulk Update
    clearField
  4. Once done, save and Activate the workflow. Run on the selected records you want to clear at once
    runWorkflow
  5. The values will now be cleared for these records
    cleared

Hope this helps!

Advertisements

D365 Solutions History – Keep track of your deployments

As you might have observed, newer updates to D365 are bringing out vital features which were much needed in Dynamics 365 are finally rolling out.

One such feature is Solution History!

As you can see in your SiteMap, you’ll see Solutions History has been added
sitemap

It gives you a summary what solutions were imported, exported or deleted.

summary

Where does this come from?

If you look at the Default Solution, this is coming from Virtual Entity Data Provider
dataprovider

Availability

My observation is that this is available for organizations from 9.1.0.1471 onward.

version

If you want to learn more about my Cloning and patching Solution, check my blog here – Using ‘Clone a Patch’ & ‘Clone Solution’ in D365 Solutions

 

Hope this helps.

D365 Quick Tip: Shortcut to Settings from the Unified Interface

If you’re spending time looking and wondering that you always need to go to the app switcher to go the Settings from the Unified Interface, you need to do the following –

Once you are in the Unified Interface, click on the Gear icon next to the help icon on top-right corner as shown below and click Advanced Settings

advancedsettings

 

Right on the next tab, Settings with the classic UI is shown –
fullsettings

And there’s nothing else on that SiteMap.

 

And that’s it! 🙂

 

D365 Quick Tip: Why BPF wouldn’t appear in D365 Unified Interface?

Got stuck trying to figure out why the Business Process Flow you created/modified couldn’t be seen in the Unified Interface?

Like I have this BPF called ‘Onboarding Process’

actualprocess

But when I look at the form on the Sales Hub, it won’t show up
blankrec

 

And when I Switch Process and try to apply, it won’t apply either
applying

Where could we check to make sure it appears –

  1. Whether it was Activated.
  2. Whether it was corrected ordered in the Order Process Flow
  3. Logged in user had correct privileges to access it.
  4. Even trying to switch to the process won’t make it appear!

and so on.

But there’s one thing that needs attention when

App Designer is the answer

The reason is the App Designer for the Unified Interface app you are in.

  1. In this case, the Sales Hub app.
    Open the Sales Hub app and look for Business Process Flows section and expand it.
    missingprocess
  2. On the right hand pane, find your BPF and add it in the App Designer
    foundprocess
  3. Once you added, it should appear in the included BPFs. Save and Publish once confirmed
    added

BPF is now applied

Now, your BPF is finally added and you can work on it.
appeared

Hope this helped! 🙂

Failed to Generate Excel error when trying to Export Data from Advanced Find

Here is the most common issues seen while trying to Export data to Excel from an Advanced Find view. And you end up seeing this error which says ‘Failed to Generate Excel’ –

error

Getting the Error

  1. So this is what you typically do – When you run an Advanced Find and click on Export when you see the results
    exportofaccounts
  2. Or, when you are in an entity’s view and you want to Export to Excel right from the ribbon button like this –
    exportfromview
  3. But, as soon as the File is being generated and you feel you’re there –
    generating
  4. You see this –
    error

 

Culprit

The reason for this is – Redundant Display Names of the fields used in the View you are exporting
duplicatedisplaynames

How to catch this

The easiest way to catch this is trying to Export the view to Excel Online, this will give you the exact error
exacterror
The Downloaded Log File won’t help much in identifying the column that is duplicate though, you’ll need to go through the Columns manually to check

 

Hope this helps! 🙂