Geo Coding addresses in D365 v9.1 with Unified Interface

Very straight-forward and useful feature is Geo Coding addresses on Sales, PSA & Field Service entities. Like, on Account, Work Order etc. entity. Let’s take an example of Account in this article.

button

Enable Geo Coding

Geo Coding first, needs to be enabled in D365. If you try to access the Geo Coding feature, you’ll be treated with this error –

error

So, let’s do the following –

  1. Navigate to the Resource Scheduling app –
    resScheduling
  2. If you are in the Unified Interface, make sure you switch the Area to Settings and then select Administration
    settingsSwitch
  3. Then, Scheduling Parameters
    schedulingParameters
  4. In Resource Scheduling, flick the Connect To Maps to Yes, read the warning specified and confirm if you are ok
    connect.png
    warning
    That’s it.

Using Geo Code

  1. Once enabled, you can click on the Geo Code ribbon button on the Account record.
    button
  2. And, it will pick the address you entered and show the Latitude and Longitude for the same. You can simply click OK once the details look correct to you
    latLong
  3. The same will show on the fields on the Account entity
    actualFields

Hope this helps!

Advertisements

Making common developer/customizer tasks simpler by using “Level up for Dynamics CRM/365”

I know how it’s like to be a developer/customizer for D365 and having to fumble between windows to reach ‘name’ of fields, look behind the scenes trying to get a schema name, etc.

But all of that is simplified with this Chrome extension called as Level up for Dynamics CRM/365 offered by Natraj Yegnaraman

Link: Level up for Dynamics CRM/365

Using the Chrome Extension

Add the extension to Chrome as below –
addToChrome

Once you see Level up icon on Chrome like below, you can use it so do common tasks and much ease –

extensionAdded

And when you click it while in D365, you’ll get tools that you could use to work your way in Dynamics 365

controlCenter

One of my favorite among these, as a customizer/developer is – “Logical names”. I shows the logical names of the fields/Tabs and saves me time from going in to Solutions or opening the Form Editor
logicalNames

Loved this and the way it works!

 

D365 Quick Tip: Hide Dashboards in D365

This being an obvious approach to how Dashboards are by default seen by all. And how you can disable/hide for users. Even for D365 System Administrators!

Unlike usual forms, view or other records,

ribbon.png

And Deleting the Dashboard isn’t an option.

Enable Security Roles way

So a simple trick is to remove entire access from Enable Security Roles

enableSecurityRoles

Make sure Display only to these selected security roles
selected

And then just untick if you want to provide no access to anyone

removed

Hope this works!

Show specific entities in Activity Party List Lookup in D365 Activity entity

Out-of-the-box, D365 Activity Party List field, say, Appointment’s Required/Optional Attendees fields lets you choose among multiple Activity Party enabled entities when you want to select records. And perhaps you don’t even want users to select what’s not relevant.

default

Let’s look at how we can show only the required entities in the selection list.

Before that, if you want to check how you can enable custom entities for the Activity Party, you can refer this post of mine – Enable entity for Party List selection in Appointment

Hide entities from the Activity Party List field

This can be achieved by writing a simple JS code and calling it onLoad of the Appointment form where the Party List field exists.

  1. Let’s say you only want to show the entities Lead and Contact in the Required Attendees Party List field
  2. Here’s the JS code that goes on the onLoad function of the Appointment form
    // JavaScript source code
    oAppointmentFormCustomization =
    {
    filterRequiredAttendees: function () {
    Xrm.Page.getAttribute("requiredattendees").setLookupTypes(["lead","contact"]);
    }
    };

     

  3. And call the method filterRequiredAttendees onLoad as below
    onLoad
  4. The Appointment’s Required Attendees field will show only the entities you provided in the setLookupTypes([“lead”,”contact”]);
    filtered

Hope this helps!

Use Read-Only grid among Editable Grid enabled entities in D365

When you enable Editable Grid for an entity, all the public views become Editable Grids, correct?

And if you wonder if you can keep certain grids as Read-Only and the rest as Editable, your assumption is correct. Here’s what this blog is about.

You can still go back and select a particular grid which you want to keep as a classic Read-Only grid

  1. Let’s say you have added the Editable Grid under Controls. This will apply Editable Grids for all the Views on that entity.
    enabledEditable
  2. And you want Vendors view, for example, to show the classic Read-Only grid, open it up.
    vendorView
  3. Select Custom Controls.
    customControls
  4. And force-add another Read only grid even if it says the Default one is already selected.
    forceAddRead-Only
  5. Save and Publish you changed and check
    classicGrid
  6. And the rest of the grids will continue to be Editable Grids
    editableOthers

Note: I tried this on the Unified Interface and this works. Somehow, it didn’t work on the Classic Web UI.

 

Hope this helps!

D365: Why do fields go missing from Advanced Find

At times, end users are used to working with Advanced Find a lot without having much control over what they can customize. Because for obvious reasons, they are users. And not someone who customize the system.

In this case, they might also not know what they can’t search for in the Advanced Find and are led into believing that all the fields are being shown.

And they could even wonder why it doesn’t appear in Advanced Find when they can see it on the Form/View.

However, there’s a configuration which can either hide/show the fields in the Advanced Find.

Making Fields Searchable

So this is the answer. If fields are not Searchable, they don’t appear in Advanced Find
featureOff

Advanced Find field list with the missing field
invisibleField

 

And, when the Searchable is set to Yes, they appear in the Advanced Find.

featureOn

Advanced Find showing the Searchable enabled field
visibleField

 

So that’s why. Hope this helps!

D365 PSA: Restrict Project access only to their Project Managers

Out-of-the-box PSA’s Project Manager security role provides complete access to even other Project Managers. But then, what if you want to bring down the access of the Project Managers to their own Projects only?

Remember, access in D365 PSA is provided for Owner (ownerid) field and not Project Manager (msdyn_projectmanager) field.

PSARoleRestrict

Scenario

Now, I don’t want a Project Manager to have access to others Projects and looks like this can’t be controlled from the Security Level perspective, given the Project Manager is a separate field than Owner of the Project.

So, I’ll limit the access to only the User level (the one who created the record would have the access, obviously)

PSARoleRestrict2

But this remove the access from even the Project Managers since they don’t own the Projects. To overcome this, I’ve written a simple plugin to provide access to the Project Manager whenever they are updated by Sharing and giving PMs the access.

For this, I’ve written a plugin code that will grant all permissions to the Project Manager of that Project and I would like to share this with you all to consume it.

GitHub Project

Here’s the GitHub repository I’ve created which has the plugin code and the Unmanaged Solution that contains only the plugin assembly and the registered step –

Link: D365PSA-PMAccessRights

gitProj

The D365 Unmanaged Solution resides here –

unmanagedSoln

This will work in the following scenarios –

  1. When a Project Manager is changed from Person A to Person B, the access rights of Person A will be removed and granted to Person B.
  2. You can even create a trigger field and use an on-demand workflow to set the trigger. This trigger should be included in the filtering attributes of the plugin step to update the existing records.

This will provide access to the Project Manager of the Project automatically apart from the Owner so that they see/access only Projects that concern them
accessGiven

Make sure no other security role is overriding your restricted access.

Hope this helps! 🙂