Menu Close

Blog

Slide 1

Microsoft Business Applications Blogposts, YouTube Videos and Podcasts

Helping Businesses with Technology

Slide 2

Microsoft Business Applications Blogposts, YouTube Videos and Podcasts

Helping Businesses with Technology

Slide 3

Microsoft Business Applications Blogposts, YouTube Videos and Podcasts

Helping Businesses with Technology

previous arrow
next arrow

{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:

{How to} Raise support ticket from Power Platform Admin Center

Hello Everyone,

Today i am going to show how to raise a support ticket from Power Platform Admin Center.

Let’s get’s started.

Login into www.admin.powerplatform.microsoft.com

Expand the Resources and click on the Help + Support.

Then create a new support ticket so for that click on + “Get Help + Support”

Then a new side window will popup and there you need to select “problem”, you need to provide some details about the problem and we’ll search for solutions.

Choose what product were you using when the issue occurred from the drop down show in the screenshot above.

Then choose the Environment where you need support from Microsoft.

Also you need to describe the issue you have related to the apps and search for solution

Click on the Get solution:

If the solution is not found from KB then Microsoft Recommends to contact support

Click on Support then a new window will popup there you need to select the related support plan you have with Microsoft, here in this example i have selected Dynamics Online.

Sipport request issue title : Plugin Issue, issue description, Issue start date you can you “Use current time” if it is started current time.

Also specify the problem you’re reporting related to a recent service change such as Release Wave, Service Update, N/A.

How severe is this issue?

You can select the options based on severity: Critical, Moderate, Minimal Impact.

Advanced Diagnostic Information: You can give permission to Microsoft to create an enviornment inside your Tenant to diagnose the issue, so you can select based on your preferences: Allow Access to Diagnostics Information (recommended) by Microsoft.

1. Allow Access to Diagnostic Information(recommended)
2. Allow Minimal Copy With Access to Diagnostics Information.
3. Allow Full Copy With Access to Diagnostics Information.
4. Do not Allow Access to Diagnostics Information.

Final step is to provide your contact details like region, email address, phone number to reach you on.

That’s it for today.

I hope this helps.

Malla Reddy Gurram(@UK365GUY)
#365BlogPostsin365Days

Share this: