Menu Close

Tag: #mallareddygurram

{How to} Simplify address entry with smart autocomplete using Bing Maps Dynamics 365

Hello Everyone,

Today i am going to show how to enabel email address suggestions with smart autocomplete using Bing Maps Dynamics 365.

Let’s get’s started.

Suppose you are entering the address in the address field and you can see the suggested addresses as they type. So it minimize manual input and saving valuable time.

This leads to increased productivity, enabling users to focus on core selling tasks and customer interactions.

Also this feature enhances data accuracy by leveraging the reliable address information of Bing Maps, reducing errors and ensuring precise communication.

How do we enable it?

Open your Sales Hub and change the settings to APP SETTINGS.

Turn on the Enable address suggestions to ON AND SAVE.

This features will work on Account, Contact, Lead and within the sales insights forms.

That’s it for today.

I hope this helps.

Malla Reddy Gurram(@UK365GUY)
#365BlogPostsin365Days

Share this:

{How to} Hide + button on global ribbon menu in Dynamics 365

Hello Everyone,

Today i am going to show how to hide the global ribbon button “+” on Dynamics 365.

Let’s get’s started.

Suppose you had a requirement to hide the + sign button on Global Ribbon on Dynamics 365 from your organisation business stakeholders, then how do you do that?

Hiding the “+” (New Record) button on the global ribbon in Dynamics 365 involves modifying the Ribbon Workbench or using a Custom Javascript web resources to control the visibility of the button. Here the general steps to achieve this:

1. Access Ribbon Workbench:

Install and Open the Ribbon Workbench tool in your Dynamics 365 environment. you can find this tool in the Dynamics 365 Solutions area.

2. Select the entity:

Choose the entity for which you want to hide the “+” button in the global ribbon.

3.Edit the Ribbon:

In the Ribbon Workbench, locate the RibbonDiffXml for the entity you selected. This is where you can customize the ribbon.

4. Find the “+” Button Element:

Locate the “+” (New Record) button element in the ribbon XML. This button is typically named “Addnew” or something similar.

5. Modify the Visibility Rule:

Modify the visibility rule for the “+” button to hide it. You can use a Custom JavaScript Function or set the “CmrRule” to false. For example, you can use JavaScript like this:

In this example, you would create a JavaScript web resource

(‘your_javascript_webresource’) with a function called ‘hideAddButton’ that return ‘false’ to hide the button.

6. Publish Changes:

Save your changes in Ribbon Workbench.
Publish the customizations to make the changes effective.

7. Test:

After publishing, refresh your Dynamics 365 oganization and navigate to the entity to see if the “+” button in the global ribbon is now hidden.

Keep in mind that modifying the ribbon involves some advanced cutomization, and it’s crucial to have the necessary permissions and a good understanding of how to use Ribbon Workbench or JavaScript for this purpose. Also, make sure to back up your customizations before making changes to easily revert them if needed.

Thats it for today.

I hope this helps.

Malla Reddy Gurram(@UK365GUY)
#365BlogPostsin365Days

Share this:

{How to} lock the records listed with editable grid in a view on Dynamics 365 Sales

Hello Everyone,

Today i am going to show how to lock the fields on editable grid when on list view of the dynamics 365 sales record.

Let’s gets’s started.

Scenario:

There is a requirement to lock some of the fields which are locked at record level but they are editable when on editable grid of the dynamics 365 sales record.

So now we need to lock those locked fields on the editable grid as well. Also that lock functionality should work on all the views of the listed records.

How do you do that?

In order to achieve this functionality it is possible with Javascript.

————————————————————————————————————————-

function ShowHideTabs(executionContext, settings) {
formContext = executionContext.getFormContext();
booleanFieldValue = formContext.getAttribute(settings.booleanFieldName).getValue();

if(booleanFieldValue == null){
booleanFieldValue = false;
}else if(settings.invertBoolean == true){
// Flip boolean to other value, this can be useful for when a value needs to be disabled, but still show a tab
booleanFieldValue = !booleanFieldValue;
}
if (settings) {
for (var count = 0; count < settings.tabs.length; count++) { if (formContext.ui.tabs.get(settings.tabs[count]) != null) { formContext.ui.tabs.get(settings.tabs[count]).setVisible(booleanFieldValue); } } } } function RunOnSelectedTest(executionContext) { var selected = executionContext.getFormContext().data.entity; var Id = selected.getId(); alert(Id); } function ShowHideGrids(executionContext, settings) { formContext = executionContext.getFormContext(); booleanFieldValue = formContext.getAttribute(settings.booleanFieldName).getValue(); if(booleanFieldValue == null){ booleanFieldValue = false; } if (!booleanFieldValue) { formContext.getControl(settings.gridname).setVisible(false); }else{ formContext.getControl(settings.gridname).setVisible(true); } } function ShowHideGridsReversed(executionContext, settings) { formContext = executionContext.getFormContext(); booleanFieldValue = formContext.getAttribute(settings.booleanFieldName).getValue(); if(booleanFieldValue == null){ booleanFieldValue = false; } if (booleanFieldValue) { formContext.getControl(settings.gridname).setVisible(false); }else{ formContext.getControl(settings.gridname).setVisible(true); } } function ShowHideGridsMultiBool(executionContext, settings){ debugger; formContext = executionContext.getFormContext(); var booleanFieldValue = false; for(var count = 0; count < settings.booleanFields.length; count++){ if (formContext.getAttribute(settings.booleanFields[count]) != null) { if (formContext.getAttribute(settings.booleanFields[count]).getValue() == true){ booleanFieldValue = true; } } } if (!booleanFieldValue) { formContext.getControl(settings.gridname).setVisible(false); }else{ formContext.getControl(settings.gridname).setVisible(true); } } // New function ShowHideSection(executionContext, settings){ formContext = executionContext.getFormContext(); booleanFieldValue = formContext.getAttribute(settings.booleanFieldName).getValue(); var uiControls = formContext.ui.controls; var booleanControl = uiControls.get(settings.booleanFieldName); var booleanAttributes = booleanControl.getAttribute(); booleanAttributes.addOnChange(function(){HideSection(executionContext, settings)}) if (settings) { HideSection(executionContext, settings); } } function HideSection(executionContext, settings){ var formContext = executionContext.getFormContext(); if (settings) { if (settings.tabs.length == 1) { tabLabel = settings.tabs[0]; } if (settings.sections.length == 1) { sectionLabel = settings.sections[0]; } if (tabLabel != null && sectionLabel != null) { if(booleanFieldValue == null){ booleanFieldValue = false; } else if (settings.invertBoolean == true) { booleanFieldValue = !booleanFieldValue; } if (formContext.ui.tabs.get(tabLabel) != null) { parentLabel = formContext.ui.tabs.get(tabLabel); if (parentLabel.sections.get(sectionLabel) != null) { parentLabel.sections.get(sectionLabel).setVisible(booleanFieldValue) } } } } } function ShowHideGridOnChange(executionContext, settings) { formContext = executionContext.getFormContext(); booleanFieldValue = formContext.getAttribute(settings.booleanFieldName).getValue(); var uiControls = formContext.ui.controls; var booleanControl = uiControls.get(settings.booleanFieldName); var booleanAttributes = booleanControl.getAttribute(); booleanAttributes.addOnChange(function () { ShowHideGrids(executionContext, settings) }) if (settings) { ShowHideGrids(executionContext, settings); } } function onRecordSelect(exeContext) { //debugger; var _formContext = exeContext.getFormContext(); var disableFields = ["bam_value", "gmr_likelihoodaftermitigationpercentage", "gmr_valuepriortomitigation", "gmr_valuebestcase", "gmr_valueworstcase", "gmr_ukriskvalue", "gmr_totalcostofmitigation"]; lockFields(exeContext, disableFields); } function lockFields(exeContext, disableFields) { var _formContext = exeContext.getFormContext(); var currentEntity = _formContext.data.entity; currentEntity.attributes.forEach(function (attribute, i) { if (disableFields.indexOf(attribute.getName()) > -1) {
var attributeToDisable = attribute.controls.get(0);
attributeToDisable.setDisabled(true);
}
});
}

—————————————————————————————————————————-

Add the script to the form

Set the properties:

Then save and publish the form.

Go to the record editable grid view there you can see the locked fields on the record level will be locked in the editable grid view.

That’s it for today.

I hope this helps

Malla Reddy Gurram(|@UK365GUY)
#365BlogPostsin365Days

Share this:

{How to } Set Forecast Manager Security Role in Dynamics 365 Sales

Hello Everyone,

Today i am going to share how to configure the Forecast Manager Security Role and what is the purpose of the Forecast Management.

Let’s get’s started.

How to add Forecast Manager security role to the user?

Login into Sales Hub, Settings > Security Roles > User > Assign the FORECAST MANAGER ROLE.

What is Forecast Management?

It helps sellers can track performance against targets and identify pipeline risks that might jeopardize their ability to hit them.

Managers can track individual sales performance against quotas to proactively provide coaching.

Directors can use forecast trends to anticipate departmental sales and allocate resouces if necessary.

Organisations leaders can use the projected estimates to change the product strategy or provide updated projections to investors.

How to configure forecasts by defining based on revenue or quantity.

We can define the type of forecast, the hierarchy access permissions, and the details we want to see in the forecast grid.

After a forecast is activated, your sales team can view the revenue, or quantity and pipeline projections.

Lets see how to configure the forecast management.

Login into Sales Hub app.

In the left cornor of the site map change the settings to APP Settings.

Under the performance management select Forecast Configuration.

Select the entity you want to see the forecast performance here in this example i have selected the Opportuntiy and hierarchy entity as User.

Set the forecast period and year, Start this forecast and number of periods, Valid from, Valid to.

Then Next.

Owner security field:

Hierarchy entity – Owner lookup field you can set to either user, or business unit, created by, manager, modified by or none, based on the role given to the users.

Additional security role:

You can add the additional security roles that are allowed to read or make adjustments to this forecast.

1. No additonal security roles

2. All security roles can read this forecast.

3. Specific security roles.

Share forecast:

Configure sharing privileges avaialable to forecast owners for this configuration:

1. None

2. Read-only

3. Read and adjust.

and then SAVE and Click NEXT

On the next screen you can add the column to add to the forecast category like quota, won, best case etc..

then Click Next

You can add Hierarchy filters and rollup filters and Click NEXT.

Snapshots

You can enable daily snapshots

Snapshots: Freezes forecast data at a moment in time, Use snapshots to see how the forecast and its underlying records have changed over time through the deal flow and Trend data visualizations.

Snapshots are atutomatically taken daily during six hours window assigned to each forecast.

Snapshots will be deleted 30 days after a forecast becomes inactive/archived according to snapshot deletion rules.

Daily Snapshots ENABLED.

Click NEXT.

On the next screen choose the appriporiate settings:

Auto hide parent row, Multi currency selection, Set Kanban as default (preview) Enable prediction factors

Click NEXT

Final step to activate forecast and click Finish.

That’s it for today.

I hope this helps
Malla Reddy Gurram(@UK365GUY)
#365BlogPostsin365Days

Share this:

{How to} enable data improvement with email validation on Dynamics 365 Sales

Hello Everyone,

Today I am going to share how to enable email validation on Dynamics 365 Sales for leads and contacts.

Let’s get’s started.

What are the benefits of Email validations(preview)

1. This will alert sellers when a lead or contact have same email address that are known or suspected to be invalid.

2. Only primary email address will be checked.

So Primary email address will be marked as not valid in the following instances:

1. Incorrect or incomplete email addresses. for example: mail@test
2. Test or spam email addresses. for example: test1@test.com
3. Temporary or disposable domains. for example: althrough@throwaway.com
4. Email addresses from expired or nonexistent domains.

Turn on for LEAD and CONTACT.

That’s it for today.

I hope this helps.
Malla Reddy Gurram(@UK365GUY)
#365BlogPostsin365Days

Share this: