Tips for Creating Custom SRS Reports In CRM Online 2011

Prior to the release of CRM 2011, I was relieved when I learned that the CRM Online group was going to allow customers to deploy custom SQL Reporting Services reports.  I just wrapped up building the most challenging SRS report I have ever built and experienced many challenges, limitations, and frustrations associated with building custom SRS reports for CRM Online.  Here are some quick points that I hope will save others some time and frustration:

  • You must use FetchXML…you cannot use SQL and CRM filtered views with CRM Online
  • CRM 2011 Online does not support most SRS functions in expressions
    • You will receive a vague error when you try to upload a report containing an unsupported function
    • (-2147188072) “An error occurred while trying to add the report to Microsoft CRM. Try adding the report again. If this problem persists, contact your system administrator.”
    • As an example:
      • CInt is supported
      • Fix, Floor, Int are not supported
  • FetchXML is much more limited than SQL
    • No functions or expressions
      • Unlike SQL, FetchXML can only return attribute values…you cannot apply any functions to do data conversion inside FetchXML
    • Basic Joins only
      • You can create joins on a single attribute only

The fact that you can create custom SRS reports in CRM Online now is fantastic.  It can be challenging but if you are persistent and creative enough, you can probably find a way to build the report you need.

CRM 4.0 to CRM “5” Transition

According to my Twitter sources, Microsoft announced today, at Convergence 2010, that “CRM 5 will be released by the end of the year with CRM Online first then on-premise.”  Now that’s the first time I’ve heard the release date officially pinned down that precisely.  I’ve been hearing Q4 and even early Q4 2010 for a while now.

Early adopters in Microsoft’s Metro program (select ISVs, key partners, and customers) have been working with Community Technology Preview 3 for a few weeks now.  We should be seeing a widely-released Beta in the near future.  That puts a lot of ISVs, Customers, and Developers in a quandry about when to make the transition to working on the new product and what to do in the meantime.  At some point you will want to stop working on Microsoft Dynamics CRM 4.0 and start customizing, developing on, and implementing CRM “5”.

That leaves you with a few choices for what to do right now:

  1. Plug Away: Keep Working on CRM 4.0
  2. Wait: Do nothing until CRM “5” is released (i.e. put everything on hold)
  3. Make the Move: Get your hands on CRM “5” asap and start working with the new version
  4. Hybrid Approach: Work on some things, wait on others

You will obviously want to have all the information you can get about the new features in CRM 5.0 and how it compares with CRM 4.0.  Without adequate information, you are sure to make bad choices.  Here are a few examples:

  • Developing an integration that is INCLUDED in CRM “5”
  • Developing a feature that is INCLUDED in CRM “5”
  • Developing code using the CRM 4.0 SDK that will be obsolete (while still probably backward compatible for one version) when CRM “5” is released
  • Developing a UI customization that doesn’t upgrade well
  • Developing something with a CRM 4.0 Architecture that would be much more efficient in a CRM “5” Architecture
  • Leveraging CRM 4.0 customization capabilities that are depricated in CRM “5”

Unfortunately, if you are not an early adopter, your access to information is fairly limited.  All early adopters are under NDA and have agreed not to share information about the new version.  I, myself, have signed the NDA (CourseMax is in the Metro program) so I can’t divulge anything yet either unless it has already been made public.  However, all is not lost, as there is quite a bit of information you can find out on the web that Microsoft personnel have been willing to release.

The best source of information at this point is the CRM 5.0 SDK which isn’t publicly available yet.  Once the feature set is locked down, the muzzles will come off.  Until then, your next best source of information is the probably the “Statement of Direction” available to customers and partners:

PartnerSource:
https://mbs.microsoft.com/partnersource/marketing/statementofdirection/MD_CRM_SOD.htm

CustomerSource: https://mbs.microsoft.com/customersource/documentation/whitepapers/MSD_CRM4StatementOfDirection.htm

Quite a bit of information was released at PDC09 which has been blogged about all over.  There is also a lot of information from various Microsoft Bloggers:

CRM “5” Workflow on Channel 9, March 22, 2010, Simon Hutson, Dynamics CRM UK Blog

Microsoft Dynamics Offers a Preview of xRM Updates for CRM 5 at PDC09, November 2009, Microsoft Dynamics CRM Communities

A Sneak Preview of Microsoft Dynamics CRM 5.0: More Social Networking, Charts, Customer Service Capabilities, September 17, 2009, Katie Morell, MSDynamics World.com

An Early Look at CRM “5”, December, 2008, Ben Riga, Microsoft Dynamics CRM Team Blog

There are also a lot of loose lips out there so do some Bing searches and you’re sure to find a good bit of info out there.  I’m headed off to CRM “5” deep-dive training for ISVs at Directions Training Center (an awesome CourseMax CRM customer and top partner for Microsoft and other IT Training) in Chicago and looking forward to learning more about Microsoft Dynamics CRM “5” that I can’t talk about yet.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Microsoft Dynamics CRM Resources

I put this page together to keep track of useful links related to Microsoft Dynamics CRM.  I did it as much for my own use as anything but if anyone else finds it useful, all the better.

Workflow
Microsoft Dynamics CRM: Workflow Authoring Best Practices
Gonzalo Ruiz, Business IT Professionals, Inc., Microsoft, January 15, 2010,
I love this post. Gonzalo explains five important best practices for building workflows.

Microsoft Dynamics CRM – Advanced Workflows
Ayaz Ahmad, MVP – Microsoft Dynamics CRM, Microsoft Dynamics CRM Team Blog, January 05, 2010

Workflow: Wait Command CRM 4.0
Dynamics Forums > CRM, February 01, 2010
Discussion around how to use the Wait and Timeout Activities in CRM Workflow

Workflow E-mail Utilities
Jim Steger, Sonoma Partners, December 15, 2008

E-Mail Router
Configuring CRM 4.0 R8 On-Premise E-Mail Router with Exchange Online / BPOS
Steve Noe, B01/27/2010

Development and Customization

ISV Utilities for Comparing Customizations and Transferring Configuration Data
Inna Agranov, Microsoft Corporation, February 2009

Inline Grids for Sales Orders in Microsoft Dynamics CRM
Ben Vollmer, November 14, 2008

Operations
CRM Client AutoUpdate
Eric Newell, May 08, 2008

Hosting
Change default Organization in CRM 4.0
Just Cruising Today Blog, January 15, 2009

Data Migration
Microsoft CRM 4.0 Data Migration Manager versus Scribe
Dale Simmons, Customer Effective Blog, March 13, 2008

Data migration overview
Microsoft Dynamics CRM Resource Center

Tool to Update MSCRM 4.0 data inline and Export to CSV for Re-import
Microsoft, CodePlex

Microsoft Dynamics CRM 4.0 Bulk Update and Export tool
CodePlex, OrbitOne Internet Solutions

Advanced Data Migration Map Editor for MSCRM 4.0 Data Migration
Microsoft, CodePlex, Mar 17, 2008

Integrating CRM using SQL Integration Services (SSIS)
CRM MVP Darren Liu, Crowe company, May 07, 2008

SQL Server Integration Services And Microsoft Dynamic CRM
Microsoft, CodePlex, Sep 15, 2008

MSCRM 4.0 Bulk Data Export Tool
Microsoft, CodePlex, Apr 18, 2008

CRM Data Import Tool
Veeran Bansal, Adithya Vishwanath, Arun Kumar, Microsoft Dynamics CRM Team Blog, January 25, 2008

Advanced Data Migration Map Editor for CRM 4.0 – Redux
Gaurav Agrawal, May 02, 2008

Tip: Using Microsoft CRM Import Data Wizard with Alternate Language

Here’s a quick tip if you are trying to import data into CRM that uses a foreign character set and you are getting gibberish. If you save your data from Excel to a .CSV file, it will be saved in ASCII/ANSI format which uses 8-bit encoding.  In simple terms, encoding means mapping characters to numbers.  Everything is stored as a number represented as bits in a computer so text has to get encoded/decoded when you store/display the data. When you import the ASCII data into CRM the imported data will look like gibberish because it is being decoded as a different character set than the source data. The trick to getting around this problem is to save the CSV file in Unicode (32-bit, Universal character set) format before you import it with CRM’s Import Data Wizard.

  • From Excel, choose Save As then save the file as CSV.
  • Open the CSV file in notepad then do a “Save As”
  • In the Save As dialogue, you will see a picklist labelled “Encoding” that defaults to ANSI (8-bit)
  • Change the Encoding to Unicode, change Save as type to “All Files” then click Save

Now you can import the data to CRM and you’ll get the original data instead of gibberish.  Sometimes I’m glad that I’m an old guy with a programming background because I had to learn about character sets, encoding, data types, bits, and bytes.  Understanding the basic fundamentals sure does make troubleshooting easier.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

LinkedIn API’s are Open for Business

I got an email on Monday from LinkedIn that their API’s are “Open for Business”. We applied for access to their API over a year ago. We wanted to do some social networking mashups with CourseMax CRM and LinkedIn. However, LinkedIn never responded to our application and so I gave up, assuming they would never come around to opening up their platform to anyone but Tier 1 players. While LinkedIn still holds on to its status as the “Professional” social network, Facebook seems to be eating into their share of that crowd (at least in my circles). I think LinkedIn has a real fight on their hands now but “Better Late Than Never”. You can find the LinkedIn API page at: http://developer.linkedin.com/index.jspa

I can’t wait to see all of the cool CRM mashups. Hopefully the Social Networking Accelerator will be updated to include a rich integration with LinkedIn.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Renaming or Repurposing Microsoft CRM System Entities

I’ve been taking part in an interesting discussion on the LinkedIn “Microsoft Dynamics CRM” group. The following is the extremely long link you will have to use to get to this discussion:

http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&gid=21231&discussionID=7432367&sik=1253708987811&trk=ug_qa_q&goback=%2Eana_21231_1253708987811_3_1

You’ll need to be a member of this group to read the discussion.

It started out with a great question about ”

Are there any real incentives of renaming the “Contact” entity?

Given that it would necessitate a lot of other work in changing the help file, user documentation, etc. this is a logical question. Several members posted responses about repurposing system entitites to which I replied:

While all of the other input is valid and valuable, I think [original poster] (she can verify) is talking about renaming Contact just for the sake of calling it something else, not repurposing it.

To which another member posted:

That begs the question, “What is the difference of renaming and repurposing?”

And here is my answer, fwiw:

I’m not sure you’ll find this in Webster’s but here’s how I would explain it:

Repurposing:
——————-
Using a system entity for something other than it’s original purpose.

ex: “Fax” to “Instant Message”.
We are adding or changing some functionality of the fax entity to make it an IM.

Another defining characteristic of a repurposed entity is that we can no longer use it for the original functionality (i.e. we no longer have faxes).

Another (less obvious) example might be calling Contact “Tenant” in a real estate customization. We haven’t changed any functionality but, by calling Contact something specific like Tenant, we’ve functionally (although not technically) ruled out having other types of Contacts who might have some relationship with us other than Tenant.

Renaming:
—————-
Changing the name of a system entity to something else while still using the functionality exactly the same way.

ex.: Contact to “Person”, “Individual”, “Constituent”, etc.
We’re calling it something else but that is all we’ve changed. We still use it exactly the same way.

I believe “Renaming” is what [original poster] meant and, in my opinion, the disadvantages/costs she mentioned outweigh the advantages of calling Contact something else in most cases. If you explain these tradeoffs to a user they will typically come around and decide not to rename it. But sometimes they just want to call it something else.

I’ll admit, I didn’t reference any definitive source for this definition. I’m just relying on my experiences. I could be wrong and perhaps there is no difference between renaming and repurposing. What do you think?

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Update Rollup 3 for Microsoft Dynamics CRM 4.0 Released

It seems like only yesterday we finished updating servers and clients to Update Rollup 2. I guess that’s because it pretty much was yesterday.  So, here we go again. Looking at the content of this rollup, a couple of things jump out at me:

  1. Very few hotfixes that were released as individual hotfixes
  2. The issues are getting more minor and unlikely to affect you
Type of Fix Count
Hotfixes and updates that were released as individual fixes 6
Issues that were not previously documented in a Knowledge Base article 65
Hotfixes and updates that you have to enable or configure manually 17 *

* Some of the updates that need to be configured manually are repeats from UR2.

Now that Microsoft has gone with a short, 2 month cycle for rollups, we are seeing far fewer individual hotfixes being released.  I think that is the new strategy.  With a 2 month cycle, there’s no reason to publish minor hotfixes that will be included in the rollup in a few weeks.  The issues & fixes are pretty minor.  CRM 4.0 has become a solid and stable product. And well it should after 14 months in market.

Get it here:

Download

Information

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

ISV Hosting Toolkit for Microsoft Dynamics CRM – Part 2

The Free Trial

A potential customer found your web site somehow.  Now is your chance so you better catch their attention before they leave.  So, put a link to a free trial or demo of your software where they’ll see it.

Get CourseMax or Try it Today!

Get CourseMax or Try it Today!

On the CourseMax site, we show a link prominently everywhere someone might think about trying the software.  The experts say a graphical link on the top-right of the page works best.  The first option we offer them is a free trial but, if they are ready to buy it now, we give them that option too.

Once they click on one of these links, they are taken to a form where they fill out the minimum info we need to set them up with a free trial:

Buy CourseMax CRM or Get a Free 30-Day Trial

Buy CourseMax CRM or Get a Free 30-Day Trial

First Name:
Last Name:
Email:
Company:
CRM Organization Name:

We ask them for other pieces of information (phone, web site, etc.) but the above fields are the required fields on the form. Once this prospect submits the web form the application checks to see if the Organization Name is available (the CRM Org name must be unique), then creates an Account and Contact record in our CRM system and links the Contact as the Primary Contact for the account.

The Provisioning Workflow

There are some custom fields we added to the account record to deal with provisioning and billing.  The workflow triggers on an update of a field called “CreateOrganization”.  The Account record is actually created and saved first after the Primary Contact is created and linked then this field is updated and the record is saved again.

Each organization takes about 10 minutes to provision in the production environment.  The provisioning steps include:

  • Check to see if another Org is Being Provisioned (<1 sec)
  • Create CRM Organization (~4 minutes)
  • Import & Publish Customizations (~4 minutes)
  • Load & Register Plug-Ins (~1 minute)
  • Import & Publish Security Roles (~30 sec)
  • Create CRM User (~5 sec)
  • Create CRM Queue, POP Account, & Configure Email Router (~ 2 sec)
  • Update Account Provisioning Status to Completed (< 1 sec)
  • Send Prospect an Email Confirmation (< 1 sec)
  • Create a Bulk Delete Job in CRM Org (~14 sec)
  • Import Configuration Entity Records (~3 sec)

I left out a bunch of small steps that are specific to CourseMax but this is the bulk of the workflow.  As you can see, the majority of the work and time is in creating the CRM organization and loading the customizations.  Both of these tasks run for 4 minutes. Loading and registering plug-in assemblies takes another minute.

Lessons Learned

One lesson we learned is that the deployment service is prone to timing out.  You can try adjusting the timout periods but that can lead to more problems.  If more than one organization was provisioned at a one time, the deployment service inevitably timed out.  We had to implement a sort of a FIFO queue to make sure one provisioning task was sent to the deployment service at a time.

We also had to execute several of these tasks locally on the server where the deployment or CRM web services are running.  That meant that we had to create our own web services on each of the servers which then ran a local process to call the CRM web services. So our workflow actually makes calls to our custom provisioning web services rather than calling the deployment service and CRM web services directly.

These steps eliminated the timeout problems we experienced initially and optimized the process.  If CourseMax becomes so popular that dozens of people are requesting free trials every hour and the queue length becomes an issue, we’ll have to look at intelligently scaling out across multiple deployment servers.  But that will be a good problem to have.

Next up…more details on the provisioning and customer conversion workflows.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

2nd Incubation Week for Microsoft Dynamics CRM Platform Startups

Sanjay Jain, Microsoft ISV Architect Evangelist, announced the 2nd CRM incubation week event.

On popular demand after very successful 1st CRM Incubation Week, we are pleased to announce 2nd CRM Incubation Week (Boston, week of 20th, April)…

Check out Sanjay’s blog for details and to nominate your company to participate in the event.

I’m excited to be an advisor to the startup teams again.  Jim Steger, CRM Development expert from Sonoma Partners and co-author of the popular books Programming Microsoft Dynamics CRM 4.0, Working with Microsoft Dynamics(TM) CRM 4.0, and Microsoft® Dynamics(TM) CRM 4.0 Step by Step, and Ross Lotharius, CRM Expert from the award-winning CRM consultancy, Ascentium, will also be there as advisors.  There will also be a panel of investors and industry experts there to give advice.  Microsoft team members will also be there providing great advice, technical expertise, and giving you the opportunity to make great connections.

Sanjay and the rest of the Microsoft team orchestrated a fantastic event back in mid-December 2008 and I expect the 2nd event to be even better.  If you are a startup looking to build a vertical industry application on a PaaS platform, this event is an unbelievable way to kickstart your business.

For the first event, five startups were selected from a field of 50 applicants.  Each of those five startups were able to build a working, compelling prototype, get great advice on technology and business planning, make great connections and friendships, and generate buzz about their venture.  That’s a lot of value for the cost of a plane ticket and 4 nights at a hotel.  So hurry up and get your nomination in.  You don’t want to miss out on this opportunity.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Supporting the Outlook Client for Hosted Microsoft CRM 4.0?

This is just a quick post that is more of a question than a post.  I’ve talked to other CRM ISVs and CRM Hosters and there are differing opinions on how or whether to support the Outlook client.  The Outlook interface is a big selling point and makes the CRM experience much better in my opinion.  However, if you have ever been involved in technical support for Microsoft CRM, you know that the Outlook client is far and away the source of the most support issues.

Today, we applied Microsoft Dynamics CRM 4.0 Update Rollup 2 on our own CRM server.  I use the “Laptop Client” which has synchronization.  Just for grins, I tried to use the Outlook client after we updated the server but before I applied the update to the client.  As suspected, I got errors trying to go back online.

It is standard practice to have all clients go online prior to applying an Update Rollup.  That’s probably pretty workable at a small or medium business.  A few salespeople will forget but that’s ok since you can go around the office and fix up a few problems.  Deploying the update to all of your users is another task you’ll have to tackle.  In an on-premise implementation you can use group policy or some other method to push out the update.  But what about ISVs and Hosters?

If you are a hoster and you support the use of the Outlook client you have to deal with pushing out an update to all of your customers every two months when a new Update Rollup is released.  So, if you host CRM 4.0, here are my questions:

Do you support the Desktop Client, the Laptop Client, or both?

What do you use to push updates to your clients?

How do you handle the timing up of pushing out updates (update all servers then immediately push to clients)?

How do you handle notifying customers of an update?

How difficult has it been to support the Outlook client?

-Dan