Tuesday, 17 July 2012

International Manufacturing Client Go Live!

An international manufacturing client of mine has now gone live.
This project involved the production of a streamlined sales process which both empowers the users with a sophisticated Quote Tool (built in Silverlight 5) and the management with intelligent forecasting.

Using Dynamics CRM 2011 provided the client with the ability to centralise all of the disparate databases and spreadsheets into one location, enabling insight into the business which was not previously possible.

The sales engineers however benefited from the Quote Tool which was build directly into the Quote form of Dynamics CRM, which not only allowed users to enter products quickly, it also provided them with:

  • Quick Product Searching on a variety of criteria
  • Stock levels fed directly from the ERP solution (using BizTalk)
  • Substitute Products when stock is unavailable
  • Spare Products which should be sold alongside key products
  • Ability to create kits which group products and allows kit pricing
  • Markup and discount calculations
  • Automated Customer discounts on key products based on agreements in the ERP system
  • Packing Specifications (Variable Bin Packing)
  • and more...
  • ... All available offline within Outlook!
This certainly was one of the more complex projects, but such a great challenge brings a great amount of satisfaction. I wish them all the best for the future with Dynamics CRM 2011.

Friday, 2 March 2012

Using the CRM web service with Silverlight and Rx - The CRM Methods

Recently, I've been developing a complex Quote tool for our client. This tool allows the user to create sophisticated Quotes with minimal effort and includes all sorts of things like preconfigured kits, automated discounts and translations into different languages. This tool had to work offline within the Outlook client, so there was only one way forward, Silverlight. And with that, a steep learning curve on how to get the most out of Silverlight within CRM 2011.

The first port of call was the MSDN walkthrough needed to connect a Silverlight app to CRM 2011 (available here: http://msdn.microsoft.com/en-us/library/gg594452.aspx). This creates your reference to the CRM SOAP web service and a new SilverlightUtility class with some of the helper messages needed.

But, one thing that really stumped me, was how to get the webservice calls to CRM to execute sequential code easily without having events and handlers everywhere, and without destroying the asynchronous nature of Silverlight.

The answer to this was Rx, which allows the developer to create simple (ish) nested code which is then executed on the completion of the asynchronous web service call, and this first blog post sets the foundations of how I used this to communicate with CRM.

I must give credit to David Yack (http://blog.davidyack.com/) who's advice online steered me towards Rx and onto develop this helper class.

First off, you need to follow the MSDN walkthrough to get the Silverlight utility and set up the webservice.

Secondly, you'll need the Rx Extensions for C# (available here: http://msdn.microsoft.com/en-us/data/gg577609) referenced in your project.

Next, we'll need to create our helper class. This class will create the simple methods required to talk to CRM using Rx, through which all calls to CRM will be made: