Recently Microsoft have released quite a few updates to it’s client API and one such is the update to API for getting the currency name of the logged in user.
All this time, Microsoft had an API to get the transaction currency id of the logged in user using the API – . You needed to run a separate query to fetch the currency name based on currency id. However it is being deprecated now and now the replacement API is
This wonderful api returns the name of the currency as well as the id and entityType.
Nested Grids – as the name suggests is a grid-within-a-grid (or rather, Grid-ception!). Nested Grids will let you expand a sub-grid entry to look at another grid of the expanded record. This depends on how you configure it.
Be aware, Nested Grids work with Editable Grids and only for Tablet, Phones and Unified Interface. This is not available for the classic Web UI.
Configuring Nested Editable Grid
Here’s my entity structure – I have Account, having multiple Contacts and each Contact, having Opportunities under them. Like in the below diagram –
Now, I have a Contact grid on my Account form (just like we usually do).
I now will have to choose the grid to be a Editable Grid Control as follows. Also, click on the Nested grid view control as pointed
On clicking the Nested grid view pencil, the next dialog box will let you select what entity…
If you have ever worked in Dynamics 365 implementation then it is almost certain that you must have played around with ribbons. And more often than not you must have faced scenario where you have multiple enable and display rules on the form and not sure why the ribbon button is showing up on the form when it is supposed not to show up or vice versa.
And what we do to resolve it. Well, we play around with the ribbon customizations which takes much more time than other customizations in Dynamics 365. And if it is some custom rule, we would attach debuggers to our custom code and debug and find what is going wrong.
What if I tell you that Microsoft just released something which shall help you identify which of your ribbon rule is evaluating to what in a matter of few mins so that you can…
I used “ReviseQuoteRequest” SDK method in one of the plugin to revise the quote. When you revise a quote from UI, first it will close the existing quote and then create a revised version of this quote. So I expected that “ReviseQuoteRequest” also do the same, but I got the “The quote cannot be revised because it is not in closed state” error when I am using the SDK method. After a bit of research, I understood that we have to Close the quote before revise it. So I closed the quote by using “CloseQuoteRequest” and then “ReviseQuoteRequest” which solved my issue. But my suggestion that SDK method should handle the close quote request also internally. Please let me know your thoughts on it.
It’s always a customer requirement to see as much as information possible with out too much scrolling on the form. Now it is possible with Reference Panels, it’s basically concept of tabs inside a tab. With the reference panels, you can place multiple sub grids or quick view forms inside a tab. Let’s see how to do this.
Open a Form Designer and then Insert tab
Insert One Column tab on the Form and name it as “Reference Panels”
Click on “Section” and select “Reference Panel”
It will insert a new Section in the tab.
Add your sub grids or quick view forms in this section. I added 2 sub grids and 1 quick view form.
Save and Publish
This is how it would look like after Publish. Select the buttons in the right hand side to change between the sub grid and quick view forms.
Hope it will help to add plenty of information as per customer need.
In one of my previous post, I explained how to use navigateTo() function to navigate to entity view. But with this function, we can do lot more like navigate to dashboards and open modal popups (html web resources) which is most awaiting feature since long back. So, finally we can open a html web resource from a ribbon button click with OOB functions.
In some scenarios we all have to refresh or navigate to specific entity view after a particular action performed. We can use a method called navigateTo() for this requirement. This method is available under new Namespace Navigate.
This is a common issue everyone would have faced once in a while that the customizations were not getting applied on the target instance through solution deployment. This is due to the direct changes on the component which is part of managed solution.
A component which is managed, gets an unmanaged layer as soon as you edit it directly on the instance. This unmanaged (active) layer lays on top of all other layers, which are coming from the different solutions containing this component. The layer on top is always winning, hence you can’t see the new changes coming from new deployments.
To avoid this issue, Microsoft introduced a new feature called “Solution Layers” where you can see all solutions where this component is part of it. You can see one “Active” solution on top of all solutions if you would have changed something directly on the instance. So, to get rid of the unmanaged customizations on managed component, you have to follow the below steps.
Select the component and Click on “Solution Layers” button (some times you can see this option under “More Actions” drop down menu).
2. On click of this button, it will show the list of all solutions which included selected component, as shown in the below screenshot.
3. Select the 3 dots (…) of “Active” solution row, select “Remove Active Custmoziations” option and confirm.
4. That’s all you have to do to remove all unmanaged customizations, after that the changes will be affected which are coming from new deployments.
I faced this situation so many times, the changes I have done for ex. in web resources in dev instance couldn’t transfer to UAT/Prod instance due to the “Active” solution layer. So with this new feature, you could remove this unwanted solution layer with a single button click.
Note: Microsoft not yet rolled out this feature for some components like Views and Fields. (Thanks Viswanath for highlighting this in your comment)
In one of my previous blog I mentioned how to use on demand flow within MS CRM. But we have some limitations with that approach
we can’t apply Enable rules on the Flow button as it is OOB context menu which generates dynamically based on the number of flows.
we can’t restrict a call to Flow to check the conditions whether Flow needs to run or not, I mean we can’t apply our conditions before a request goes to Flow.
Step 1: Create a Flow with HTTP Request with proper “Request Body JSON schema” (use sample payload option to generate the schema)
Step 2: Add “Create a new record (Dynamics)” action to create a new Contact in CRM.
Step 3: Add a Response action at the end to send the response back to CRM and Save the Flow .
Step 5: Create a ribbon button in CRM and call the below function from the ribbon button.
with this approach you can add all your validations in the java script and call the Flow once the conditions met, this way we can reduce lot of unnecessary calls to Flow. We can pass whole record context to Flow if needed. Hope it is interesting 🙂