Blog Post

Building Reports and Analytics on Dynamics CRM – Lessons (Being) Learned

,

In concept, designing reports is such a simple thing… you connect to a data source,

write a SQL query, optimize the query so it runs fast and efficiently, build the report

UI and deploy it to the server.  Piece of cake, right?  Not always. 

Reporting on simple, normalized data structures can be simple but sometimes reporting

on specialized application data can get complicated, and the best approach may not

be so clear.

I’m not going to pretend to have all the answers about using Reporting Services to

report on MS CRM data but I have learned some lessons and will certainly learn more. 

I’ve recently worked on two different client’s reporting projects where the rules

of engagement were not so clear and it took several weeks just to reach the point

of knowing what questions to ask in order to define sufficient business and technical

requirements to design reports.  My most recent experience is with a customized

implementation of Microsoft CRM 4.0.  Our statement of work is to deliver several

reports similar to those in their old billing & ERP system along with the new

CRM deployment.  I actually worked on the MS CRM team in 2004 as a consultant

at Microsoft when they were developing CRM version 1.2.  The filtered views didn’t

exist yet and the database was much more simple than it is now.  I designed a

handful of SSRS 2000 reports for inclusion in the stock product to replace the original

Crystal reports that shipped in the first version of CRM.  This new project is

my first experience with the CRM product since that time and it’s a whole different

ball of wax.  Our company has a dedicated Microsoft Dynamics practice with many

people who know the Dynamics products inside and out.  It’s great to work with

people who know their products very well but sometimes the challenge can be tapping

into a culture that has evolved around a vertical product and its market along with

some very unique concepts and practices.  As the general database and BI reporting

expert, I’m very much the outsider in this culture.

Our CRM client’s business needs are quite unique from the typical call center or order-taking

desk that might use a CRM tool.  Every business will have some of their own rules

and requirements and the CRM framework provides for a good deal of customization to

address some of these unique needs.  In the case for this client, many new database

entities and fields have been added, the application UI has been modified and several

business entities in the application have different names than those that are common

in their business culture.  Here’s one or many possible examples… the client

refers to the work they do for their customers as a “job”.  Depending on where

they are in the sales cycle, a “job” could be equivalent to either a quote or a sales

order in the MS CRM application context.  A quote can be converted or copied

to an order record, which has roughly the same field structure as a quote but there

are subtle differences.  Therefore, the translation of job to quote or order

isn’t always apples-to-apples.  Since the new CRM solution is still being implemented

for the client, the database schema hasn’t been completely locked-down during report

design.  Adding few fields as we go wouldn’t be such a big challenge but some

of the fields have been dropped and renamed, which of course, breaks queries and existing

report designs.  To a certain extent, some query and report design can be a integral

part of the field mapping discovery process but it’s very important to set the clients

expectation and separate the requirement definition effort from production design. 

Until you have sufficient experience, this can be time-consuming and difficult to

provide work estimates.

Another issue stems from a database design pattern in MS CRM where all data access

is supposed to be made through a set of special views that filter data based on each

users’ Windows user permissions and group membership.  All of these views are

prefixed with the word “Filtered” and provide simple data presentation over the complexities

of the normalized database schema.  Every significant business entity has one

of these filtered views that developers and report designers are encouraged to use

in lieu of the base tables.  In many ways, this is great news for report designers

who don’t have to content with complexities of the database schema.  The trade-off

is that the report designer using them is completely oblivious to the specific field

mappings and table relationships.  In many cases, this makes the design experience

much easier but in some cases, locating a specific piece of application data can be

a frustrating needle-in-a-haystack game.  Several fields have similar names and

the views contain lookup table joins, concatenations and calculations.  If you

don’t know that these derived columns exist, you may end up duplicating the same functionality

in a report query and then figure out that the work had already been done for you. 

Some of the filtered views are multiple layers deep, with views based on other views. 

In one case, I joined two filtered views together, analyzed the execution plan for

the query and found about 90 execution steps.  I can only imagine how slow a

seemingly simple query may be with the database fully-populated.

Bottom line: the business rules must be well-known and documented before starting

the report design.  The database schema should also be locked-down before designing

report queries.  That’s the theoretical answer.  The reality is that MS

CRM allows “CRM application designers” and non-database professionals to make schema

modifications through the application UI.  These changes not only create tables

and columns but modify corresponding views and indexes accordingly.  In the end,

the challenge comes down to project management discipline and adhering to application

design standards rather than the typical DBA/database developer design principles

that exist for traditional database scenarios.


Weblog by Paul Turley and SQL Server BI Blog.

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating