Click here for “CRM Portals and Dynamics CRM Portals Feature Comparison“
Click here for “CRM Portals and Dynamics CRM Portals Feature Comparison“
Dynamics Version 9.0 introduced the Xrm.WebApi namespace which provides all the methods to interact with dynamics CRM server from client side script.
However recently I was working on a project to upgrade the SOAP calls from client and replace them with the new Xrm.WebApi methods. Create/ delete/ update were kind of easy and was easily ported to the new API’s.
However then came the Actions. The client had actions which had many input parameters and which were getting invoked from the client using SOAP calls. We had to port them to the Xrm.WebApi. But in Xrm.WebApi we did not had any function like executeAction. But the Xrm.WebApi.execute came to our rescue.
Let’s first examine Xrm.WebApi.execute method. Microsoft documentation shows it like this –
For the sake of brevity of this blog post, I am skipping the documentation of the parameters. For detailed information on the parameters, please refer the below Microsoft documentation link – https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/clientapi/reference/xrm-webapi/execute
So how to call an action with input parameters? For this post, I created an action named “new_TestAction”. The action is global. It has the following input parameters.
For entityreference, entitycollection and entity, I have kept the Entity as Account Entity. All set and done. Now the next step is to call the action. below is the sample code to create the request object. All the important parameters has been highlighted and appropriate comments put.
TestAction1: function (input1, input2, inputEntityReference, inputAccount, inputAccountCollection) ,
operationType: 0, // 0 for action, 1 for function and 2 for CRUD
Next is the code to create this request object and pass the object to the action.
ExecuteAction: function () ;
var accountEntity = ;
var accountEntityCollection =[
var requestObject = new TestAction1(“Name”, “Age”, accountReference, accountEntity, accountEntityCollection);
Xrm.WebApi.execute(requestObject).then(function (result) ,
function (error) );
Simple isn’t it. I haven’t covered the other primitive types like – Decimal/ Int. They are pretty simple like for int, it is Edm.Int32.
Hope this helps!
Another fantastic article for Deepesh Somani
Business Requirement: Often there is requirement to show Case severity in some colour encoded way in Dynamics 365. For example, refer image below:
Solution: Below steps can be used to achieve this requirement without writing code:
1. Go to Settings->Customization->Entity->fields and add a new field of type Option Set. In the example above I have created a new field Case Severity on Case entity. Add items text from the following link: http://classic.getemoji.com/
Following images were used in the above example:
2. Add the column as the first field in Active Case view and other views that you wish. Optionally, you can also place the field on the Case entity form. Next, in the editable grid you will be able to set the priority by this field:
3. Not only that, you will be able to group as well by selecting Group by:
I have been working with Customer IT Team on a Dynamics 365 project and we have been doing kind of fancy stuffs, new features and what not. And suddenly we are being reported that Qualify button on lead form is not working. However the same is working from the “Home Page grid”.
First glance and I thought – Must be some silly tampering with the Qualify button. However one quick inspection with Ribbon Workbench negated that suspicion. How can such a stuff working for years can’t work all of a sudden in our environment? Product Bug? Can’t be for sure. It’s been working for years!
After beating around the bush, we finally decided to keep a back-up of our customizations and restored vanilla lead form from different environment. Qualify button started working like piece of cake.
In curiosity, to find out what caused the issue, I started removing one field after the other and finally found that the magic field was “Company Name” field. The moment I removed that, Qualify stops working.
Strange isn’t. But that’s how it works.
Honestly, Qualify button may not work for host of reasons but if you find yourself banging your head over this functionality, this article might just make your day!
Hope this helps
As I have been working mostly on Dynamics 365 portals, here goes another D365 portal post.
So here is the requirement. The portal customer applies for loan and then views the status of the loan request through the portal. However for every customer, there is one contact who is kind of Power User and is hence able to view some additional details on the Loan Request Form which the regular portal customers are not able to see,
The additional details are like.
So here is the set-up.
In the portal there is loan request web-page, which depending on the logged in-user, renders the Admin form.
To determine whether the portal user is a Power User or not, there is a field on the contact entity – “Is Power User” which need to be set. Below is the screenshot for the same.
schema name for the field – new_ispoweruser
Creating a loan request entity and then showing it up for the demo would take lot of time and also can’t use the screens from the client system due to legal issues. So here I would basically show you with the account entity, how you can dynamically render a entity form based on condition using Liquid.
Step 1 : Create a Blank Web-Page and set it up in the Portal Navigation
Go to CRM –> Portals –> Web Pages –> New
As you can see, I have created a Web Page with template as Blank Page. Notice carefully that I have not set any entity form or entity list. This is because I am going to set those up dynamically depending on conditions.
Now login to the portals as admin contact and then include this web page in the Navigation.
Clicking on Loan Status gives an empty page because we are using the blank page template.
2. Setting up of Entity forms
Now to mock up the previous scenario, I have created two forms for account entity.
Create Two entity Forms in CRM based on these two forms.
3. Set up the forms Dynamically using Liquid.
Login to the portal using the admin contact and edit the Copy content of the Loan Status Page.
Enter the below Liquid Code in the editor.
Pasting the same code inline
The code is pretty simple. All it is doing is checking if the logged in portal contact is a power contact, then load the admin form. The general form is always loaded by default
Save it and now when you refresh the page, you would see the power user is able to see both the forms. Using the same construct, you render forms dynamically based on business conditions.
This is one more of my recent articles on ADX portals and this blog I am going to write on how to select the topmost record from an entity view using query filters.
Can’t depict the exact business scenario here but probably an example will get you started on how to get started with the query filters.
So let’s take an example here – What if someone asks you to print the the details of an employee with the highest salary from a specific view?
Let’s assume there we are leveraging the Contact table in CRM for Employee.
And the view I select is “Active Contacts” view.
Schema name of the salary field in the contact table – “new_salary”
In CRM, I created an Entity List called “Contact List” with a view “Active Contacts”
In the Portal side, in the Copy field just paste the below code.
Employee Name: }, Salary: }
The code is pretty simple. I load the entity view “Active Contacts” from the Entity List “Contact List” that I created in the previous step.
The important part is the code highlighted in yellow.
I just take the output of view and then order by salary descending (default order is ascending) and in the next line I just take the top record from there.
That’s all. I now just print out the Employee Name and the Salary of the employee. Not a real world example but probably helps you get the idea.
After my recent posts on ADX portal, I came across a question on how to dynamically load an entity list in a web-page. For people knowing on how to use Liquid, basically the user was trying to render an entity list using the below syntax.
Unfortunately the entire entity list will not render like this. Rather if the entitylist loads successfully, it would execute anything within the entity list block.
So if I write something like below.
Entity list Loaded successfully
It would render “Entity List Loaded Successfully”
So is there no way. Off-course, where there is will, there is a way.
So I decided to try the below approach. Please note that code does not give the entire solution as you would need lot of styling to achieve the final goal but this can definitely get you started.
Step 1: Create a web-template
The first step is to create a web-template. Since I would creating the HTML table dynamically, I require a web-template.
Go to CRM –> Portals –> Web templates
Select New and then the new template screen would be presented. Below is the screenshot of my template.
I have named id “Custom Grid Template”. Don’t worry about the source. Here it is below for full reference.
The code covers most of the scenarios that you are going to need to render a HTML table from EntityView or EntityList. Let’s run through all the highlighted parts.
The interesting part is checking for the attribute type
Till this point, I was OK. However to be honest, I was completely stuck on how to identify EntityReference and picklist.
And finally this came my to rescue. https://docs.microsoft.com/en-us/dynamics365/customer-engagement/portals/render-entity-list-current-page
A bit nerdy but awesome it is.
Step 2: Load the web template dynamically in the webpage
Below is the code for the same.
And once you are done, below is the HTML table rendered dynamically. Off-course it is raw, but with a bit of styling it can look great.
Please visit orignal page
If you haven’t yet tried Microsoft Dynamics 365, you’ve come to the right place. Let’s go over the basics. This cloud-based platform builds and expands upon the features of Microsoft Dynamics CRM 2016 while allowing you to access and upload data anytime, anywhere. It focuses on and unites the things that matter most to your business: people, data, and processes.
Big or small, non- or for-profit, Microsoft Dynamics 365 offers something for every organization Subscriptions are flexible and allow you to purchase the specific apps and access levels that make the most sense for you. If you don’t need the functionality of an app, you don’t have to pay for it. If 90 percent of team members don’t need administrative privileges, the price reflects it, with user licenses available for as little as $8 per month.
Combining customer relationship management (CRM) and enterprise resource planning (ERP) tools, Microsoft Dynamics 365 provides everything from customer-facing portals and automated email marketing campaigns targeted at specific markets to coordinating across departments and scheduling the appropriate resources based on skill, location, and availability.
Dynamics 365 can aid your customer engagement, employee empowerment, operations optimization, and product transformation efforts, and take your business to the next level.
Zap, a creator of business intelligence software that compliments Microsoft Dynamics products, has released Zap CubeXpress 2011.
CubeXpress 2011 simplifies the process of creating and maintaining a Microsoft SQL Server data warehouse to produce an optimized SQL Server Analysis Services (SSAS) OLAP (online analytical processing) cube. This process tends to be the most complicated part of any business intelligence (BI) project. However, CubeXpress 2011 reduces the technical resources required of such a project by providing customers with a simple, wizard-driven interface. This can reduce the cube creation time from months to as little as a single day. The semi-automated approach also reduces risk.
CubeXpress 2011 supports the use of data from multiple databases in one cube. It can take data from applications such as Microsoft Dynamics CRM, AX, NAV, and Microsoft SQL Server.
Since Zap designs BI applications that compliment Microsoft Dynamics products so well, we at xRM.com are proud to claim partnership with them. As a member of the Zap Partner Program for Microsoft Dynamics, xRM.com can help your organization utilize CubeXpress 2011, as well as other Zap Business Intelligence 2011 applications. If you are interested in enhancing your Microsoft CRM Online experience, or want to learn more about Zap CubeXpress 2011, we invite you to follow our xRM.com Call to Action.
Published at Mon, 29 Aug 2011 20:30:06 +0000
Global Search is a feature of Microsoft Dynamics 365 that should not be overlooked. It allows you to query multiple entities simultaneously with the magnifying glass icon in the upper right corner of the screen.
While out-of-the-box, Global Search is set up with default settings, customizing the entities and fields it searches to meet your business needs is simple. Let’s detail both parts: selecting entities and selecting fields.
Selecting the Entities for Global Search
Within Dynamics 365, click the down arrow to the right of the current app name, choose the Settings tile, then click Administration within the System column.
On the Administration page, click System Settings. In the window that appears, within the General tab, scroll down to the Set up Search section. Click Select to select the entities for categorized search.
The Selected Entities column shows the entities that Global Search currently pulls results from. As you can see, currently it’s only querying 8 different entities. This is how it will be set up out-of-the-box, but you can actually include up to 10 entities. Be careful, as you can select more than 10 entities in this window, but when you save, you’ll receive an error if there are more than 10 selected. You can do a couple different things in this window.
Here’s a quick rundown:
Click OK when all desired entities are selected.
Click OK again to close the System Settings window.
Selecting the Fields for Global Search
After setting up the entities to search, you need to update the Quick Find view for the entities you included in Global Search so that the desired fields are being searched within each of the entities.
Click Customize the System. In the window that appears, click to expand the Entities section, then click the name of one of the entities you selected for Global Search to expand. Within the desired entity, click Views. In the list that appears, find the Quick Find view, click the check mark to the left of the view name, then choose Edit from the More Actions dropdown menu.
In the window that appears, you’ll see a table that shows the columns of information that will display in the Quick Find view for that entity. To the right of the table, you’ll see Add View Columns and Add Find Columns.
Click Add Find columns and check the boxes to select the fields to search on for Global Search. For example, if I add Address 1: City, and Address 1: State, then I can type a city or state into Global Search and return a list of the accounts located there. Click OK when finished.
You’ll notice that the columns shown in the table will not change. This is you’re simply adding fields to search on, not fields to show in the view. If you want to change the Quick Find view, use Add View Columns, then use the arrows to rearrange them.
When you’re finished, click Save & Close.
Now, in order to activate these changes, you must click Publish All Customizations.
That’s it! You’ve selected custom entities and fields to use for Global Search.
For more videos, blog posts, and information on Microsoft Dynamics 365, visit xrm.com!