Run Workflow Smart Button in Ribbon Workbench | XrmToolBox

Here’s how you can use the Run Report button from Smart Buttons in Ribbon Workbench. In case you haven’t yet installed Smart Buttons in your Ribbon Workbench for your organization – Here’s a post for that – Install Smart Buttons for Ribbon Workbench | XrmToolBox

Now that it’s given you might have installed Smart Buttons already, let’s review how you can use the Run Report button for your Organization.

Scenario

I have a Workflow which updates the Account’s Account Grade field to the value Verified


And the field to be updated is as below –

Run Workflow button

Before we begin, add the entity-only in a Solution and then load it up into Ribbon Workbench –

  1. You’ll see Smart Buttons show up in your Ribbon Workbench.

  2. When you drag the button over to the Grid (Form in this case), you’ll be given this popup window to fill in the details of what the Run Workflow button should do –
    Title should be the title of the Window.
    Workflow Name should be the text Display Name of the Workflow itself.
    Start Workflow Confirmation Text should have the text that should be displayed on the confirmation dialog when clicked on the button.
    Success Callback JavaScript should have a JS snippet of what it should do upon success.
    Error Callback JavaScript should have a JS snipped of what it should do upon error in Workflow execution.


  3. Once you click OK, this is how it will appear.

  4. And that’s it, publish your changes and reload the Page to see the Smart Button to Run the Workflow in action!

Working

Let’s see below on how this Workflow button will work –

  1. On the Account form, I can now see this button being displayed and it has it’s Run Workflow icon built in.


  2. When you click the button, you’ll be seeing this message.

  3. And when it is running, you’ll see this notification on the form.

  4. And when this is done, it’ll change the value (or whatever your workflow is supposed to do).

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Run Report using Smart Button in Ribbon Workbench | XrmToolBox

Here’s how you can use the Run Report button from Smart Buttons in Ribbon Workbench. In case you haven’t yet installed Smart Buttons in your Ribbon Workbench for your organization – Here’s a post for that – Install Smart Buttons for Ribbon Workbench | XrmToolBox

Now that it’s given you might have installed Smart Buttons already, let’s review how you can use the Run Report button for your Organization

Run Report

Here’s how you can access the OOB report in Dynamics 365 CRM –

  1. Where you have Run Report button, like this – all the SSRS Reports are under this flyout menu.


    And then you have these reports.


  2. Now, we have have this into a direct button just for that!

Run Report button

Before we begin, add the entity-only in a Solution and then load it up into Ribbon Workbench –

  1. Now, you’ll see Smart Buttons menu within which you’ll see Run Report button

  2. Once you drag it to your Form ribbon, you’ll see a pop-up immediately asking for what the Label of the button should be and what the Report should be. Enter the name and click on the magnifying button to show reports of the Report available to use.


  3. Once you select the same correctly, you’re button will look like this

  4. Once done, Publish your changes and refresh and test the same on your Account Form.

Working

Once all the changes are Publishes, you’ll see the below –

  1. The Button you added will now show up like this.

  2. When you click it, it’ll open the Report just like you would have to do from going in the menu. This makes the whole experience so easy since the most relevant reports can be put in buttons and prioritized on the ribbon.

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Custom Pages in Power Platform and adding them in Model-Driven Apps | Power Apps

You Can create Custom Pages in as a Canvas App and add it to Model Driven App! Here’s a quick tutorial on how you can do this!

Creating Custom Pages

Here’s how you can create Custom Pages. Make sure you are in Power Apps and in the correct intended environment (https://make.powerapps.com/) –

  1. Make sure you are inside a Solution.

  2. Now, you can drop down from the + New menu and expand App. Then, you’ll find Page as an option which is different from Canvas App.

  3. When you click on Page, you’ll get the Canvas App Studio with the capabilities of Canvas App to be added to your Page.

  4. Now, let’s say you have designed the Page to serve your desired purpose. Make sure you Save and Publish the App, it’ll ask you to Enter the Name for the App (or rather, Page)


    Enter a suitable name and click on Save.

  5. Once Saved, make sure to Publish again and confirm the Publish just like you would do for a Canvas App.


    And confirm the Publish action.

  6. Now once this is done, you can go back to the Solution and check that the Page will appear.


    and that’s how you have created a Page. Now, let’s consume this in your Model-Driven App!

Adding Custom Pages to Model-Driven Apps

Now, in the same solution, I’ll add the Model-Driven App so that I can configure the new Page I created in this Model-Driven App –

  1. When I go into App section in the solution I’m working in.

  2. And in that, I can click on Add existing button and expand App and then select Model-Driven App

  3. Now, from all the Apps, I want to add this Custom Page to the Sales Hub App. It could be anything else in your case.

  4. Once added, open the App.

  5. Once opened, you’ll see the + Add Page button. Click it.

  6. Now, the Dialog will ask what type of Page should be added. Custom Page is to be selected here.

  7. Now, you will be given option to either Create New (which we could have done directly but I wanted to demonstrate how to create within the Solution itself first), or add Existing.
    We’ll choose to add Existing Custom Page. And then, we select the Custom Page we just created i.e. Account Review Page.
    For the Page to show in the Site Map, make sure Show in navigation is ticked.


  8. Once you Add, you’ll see how the Page appears in the Model-Driven App. Publish your changes to this Model-Driven app is you are satisfactory.


  9. Once this is done, your Custom Page is added to the Model-Driven App and here’s how it looks!

Here’s complete document on Custom Pages on Microsoft Learn – https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/model-app-page-overview?WT.mc_id=DX-MVP-5003911

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Install Smart Buttons for Ribbon Workbench | XrmToolBox

So, to make things even better in Ribbon Workbench, Smart Buttons have been introduced and here’s what they do and how you can get started with it!

Installing Smart Buttons

Initially, you would see this in your Ribbon Workbench, given that you are working on a Solution in Ribbon Workbench for your customization –

  1. You’d see this message for Smart Buttons if the Smart Buttons solution is not installed in your environment.


  2. Once you click the link (https://ribbonworkbench.uservoice.com/knowledgebase/articles/896958), you’ll be taken to the Release notes and you can then click here to find the link to the GitHub page [https://github.com/scottdurow/RibbonWorkbench/releases]


  3. Here’s Scott Durow’s GitHub Page for the Smart Buttons solution – https://github.com/scottdurow/RibbonWorkbench/releases
    The GitHub page also has link to the Unified Client buttons – https://develop1.net/public/post/2018/04/06/Adding-Ribbon-Workbench-SmartButtons-to-the-Unified-Client


    And you can Download the solution shown below –

  4. Now, you can import this in your environment –


    Once this solution is imported, you’ll see this –

  5. It’ll be a Managed Solution (that’s why you don’t need to Publish Customization :))


  6. And when this is imported, you can re-open the Ribbon Workbench and you’ll find the Smart Buttons show up.

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Hide options from OptionSet using JavaScript in Dynamics 365 CRM

Many times, you might not want to show all Options from an OptionSet while it is on a form. So, here’s how you can hide Options from OptionSet using JavaScript in Dynamics 365 CRM!

Scenario

Let’s see the below scenario where these are the options you already see –

  1. You see, there are 3 options for this OptionSet on Contact Form.


  2. Now, you want to hide “Platinum” as an option when a Form loads. So, let’s see how this done.

  3. Now, we can use this information to hide the Option Platinum. We’ll write JS script on the OnLoad of the Contact form.

JS Code

Here’s a JS code sample which will hide the options which you don’t need to display.

  1. Below is the code which you need to register OnLoad of the Contact form and also pass the Context as first parameter –

  2. And when you register it OnLoad, it should look like below –

Code:

oContactCustomization = {
  
    hidePlatinumGrade: function (context) {
        "use strict"; debugger;
        var formContext = context.getFormContext();
        var gradeOptionSet = formContext.getControl("new_grade");
        if (gradeOptionSet !== null) {
            gradeOptionSet.removeOption(3);
        }
    }
};

Here, you get the OptionSet using getControl(); method and then use the variable to then have removeOption(<OptionSet Value>);

Result

Now, when you load the form, you’ll see the option is no longer visible –

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Asynchronous Merge in Dynamics 365 CRM Power Apps | Power Platform

If you are familiar with Dynamics 365 CRM and it’s Merge feature for records, here’s a new feature that will let you merge records asynchronously and not hold your time on the screen.

Scenario

Below is how Merging operations would run had Asynchronous Merging not been turned on for your environment –

  1. When you select 2 records, you’ll see the Merge button, of course.

  2. And when you see the preferences which you have to select and move the fields into the Active/Master record.

  3. Once you click OK, you’d see this loading screen as the operation would happen in the background.

  4. Now, depending on how many related/child records you had for the selected records, it would take that longer time to process and it’s inefficient to hold your screen while the merging is happening – much like a Synchronous plugin.
  5. The only advantage is that you would know if anything failed.

    Let’s look at how you can enable Asynchronous Merge on your environment and how this will affect your experience along with some pet-peeves.

Enable Asynchronous Merge

Given that you have correct rights for your Power Platform Admin Center [PPAC] (https://admin.powerplatform.microsoft.com/environments), here’s how you can turn the Asynchronous Merge for your environment –

  1. Select the Environment which you want to enable this on –

  2. Expand the Product section and click on Features.

  3. Now, scroll down till you see the option and you’ll see that it is turned off by default.
    You can turn this On and Save the Settings.

  4. Once this is turned on, you can see this –


  5. And that’s it, you’ve turned on the Asynchronous Merge for your environment.
    Let’s look at how it will behave in the next step.


    Please note that this takes about 20-30 minutes to take effect in my experience.

Behavior

Now, let’s select another pair of records to Merge –

  1. I’ve selected the below records to Merge and I can see the Merge button as well.

  2. And you’ll see your usual dialog box to select the fields you want to merge into the master record.

  3. Now, when you click OK, they’ll be merged post they have completed the Parent Check.
    To read more about Parent Checking while merging records, you can check this – Parent Check for Merging Records in Dynamics 365 CRM | Power Apps
    And the records will be processed in the background for merging and you can continue to work.

  4. Now, in order to find what happened to the merge operation, you can go to Settings > System Jobs.
    And look for this operation.

  5. Once you know how to solve the error (see an example in #3 above), the successful Merge operations’ Job start in the background and you’ll see a toast notification on the top right as below

  6. And then, when you look at the System Jobs, you’ll find that the Job has succeeded.




Here’s Microsoft’s Learn document on the same – https://learn.microsoft.com/en-gb/power-platform/admin/async-cascading#merge-record-example?WT.mc_id=DX-MVP-5003911

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Parent Check for Merging Records in Dynamics 365 CRM | Power Apps

In case you ever tried to Merge records in Dynamics 365 CRM and it failed, you’d usually see the below error –


The error reads – “Unable to merge because sub-entity will be parented differently. You can disable the parent check prior to execution as part of Merge dialog.

Let’s see why this error occurs and how to solve this.

Scenario

This scenario occurs because the records you are trying to Merge had different Parent records already.
Example –

  1. Notice the below records selected for Merging –
    The Contacts to be Merged already belong to different Parent Account

  2. And when you select them for Merging using the Merge button upon their selection.

  3. You’ll also be given Parent Checking selected by Default.

  4. This is what causes the error.
    Now, if they either had the same Parent or one of them doesn’t have a parent, this won’t appear and they’ll be Merged.

  5. Now, they’ve been correctly Merged and only 1 record exists.

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!

Bulk Delete Cancelling in Dynamics 365 CRM | [Quick Tip]

In case you want to cleanup some background data in a Sandbox environment but your Bulk Deletion Jobs are failing? Here’s why.

Canceled Bulk Deletion

Below is what you would see –

  1. Once you set a Bulk Deletion job in a Sandbox environment, you notice the below –
    The Bulk Deletion Job gets Canceled without even deleting a single record!

  2. There’s a specific reason for why this is happening. Let’s look below.

Background Process

Here’s why the Bulk Deletion job keeps failing –

  1. The reason Bulk Deletion jobs are getting Canceled in the Sandbox environment is because of the Background Processes.
    In case the Environment is in Administration Mode.
    Open the Environment Power Platform Admin Center (https://admin.powerplatform.microsoft.com/environments) and Go inside the Environment.
    Look for the Edit button.

  2. You’ll find that the Administration mode might be enabled. But besides that, the Background operations might be disabled.
    This is causing the Bulk Deletion jobs to fail.

  3. And when you restart the process, you’ll find that the Bulk Deletion Jobs will start deleting the items and will be In Progress.

Hope this helps!

Here are some Power Automate posts you want to check out –

  1. Select the item based on a key value using Filter Array in Power Automate
  2. Select values from an array using Select action in a Power Automate Flow
  3. Blocking Attachment Extensions in Dynamics 365 CRM
  4. Upgrade Dataverse for Teams Environment to Dataverse Environment
  5. Showing Sandbox or Non Production Apps in Power App mobile app
  6. Create a Power Apps Per User Plan Trial | Dataverse environment
  7. Install On-Premise Gateway from Power Automate or Power Apps | Power Platform
  8. Co-presence in Power Automate | Multiple users working on a Flow
  9. Search Rows (preview) Action in Dataverse connector in a Flow | Power Automate
  10. Suppress Workflow Header Information while sending back HTTP Response in a Flow | Power Automate
  11. Call a Flow from Canvas Power App and get back response | Power Platform\
  12. FetchXML Aggregation in a Flow using CDS (Current Environment) connector | Power Automate
  13. Parsing Outputs of a List Rows action using Parse JSON in a Flow | Common Data Service (CE) connector
  14. Asynchronous HTTP Response from a Flow | Power Automate
  15. Validate JSON Schema for HTTP Request trigger in a Flow and send Response | Power Automate
  16. Converting JSON to XML and XML to JSON in a Flow | Power Automate

Thank you!