CRM Online Reporting with FetchXML (How to Use FetchXML Data in the Report)
CRM Online Reporting with FetchXML Series
Intro: Intro to Series
Part I: How to Set up a Data Source to Access CRM Data in SQL Reporting Services
Part II: How to Use FetchXML Data in the Report
Part IIa: CRM FetchXML Operators
Part III: Handy SQL Reporting Services Functions for CRM Online Reports
Getting FetchXML out of CRM may seem like a daunting task at first, but it's actually pretty easy if you take advantage of the Download Fetch XML command in the Advanced Find window. In this example, I used the out-of-the-box Accounts view for No Campaign Activities in the Last 3 Months:
This will actually show you the xml that you can use in your report and modify as necessary.
So the first thing to do is to create an Advanced Find query as close as possible to the report you want to run. Then it makes it easy to modify the filter and add parameters to the conditions. You can always add attributes in FetchXML, but it's easier to just add that column in the Advanced Find window.
Adding Parameters to a Fetch Based Report
Part of the big benefit of using SQL Reporting Services to create reports is the ability to combine datasets in these reports. In my report example, I am primarily reporting on appointment data, but I want to select one or more project tasks to the report. The project task list becomes a parameter selection for the main appointment report, so I need the value field from the project task selection to put into the FetchXML query for appointments.
The following FetchXML shows how to insert the parameter "ProjectTask" to the value attribute of the condition element:
<condition attribute="regardingobjectid" value="@ProjectTask" uitype="new_projecttask" operator="in"/>
The default FetchXML in this case included an attribute called uiname, but I removed that because it's not necessary to make the connection between the two entities. It also had an operator of "eq" but I changed it to "in". This allows me to multi-select parameter values when running the query. With "eq", I'd only be able to choose one selection from the drop-down list generated by my other dataset.
There is much more that could be explored here, but these were my two big discoveries that made the process easier, so I hope they are helpful to you in your creation of CRM Online reports.