Our Blog

where we write about the things we love



Another conference, another demo – Intergen develops a Word add-in with a twist for TechEd North 2010

Over the last year, we’ve spent a lot of time building demos for Microsoft, which, while stressful, is really rather good fun. We have been involved in applications that have been on stage at some of Microsoft’s largest conferences, including PDC and SharePoint Conference. This time we have built a CRM demo for TechEd North 2010 in New Orleans.

However, this time the usual initial scenario planning calls didn`t really knock my socks off. I guess the combination of being busy with a lot of things to do and talk about Word add-ins made it all seem dull and uninspiring. Seriously, how cool is a Word add-in?

Well, it turns out that it can be really cool! Especially when your solution ends up involving VSTO (Visual Studio Tools for Office), WinForms, WPF (Windows Presentation Foundation), WCF (Windows Communication Foundation), Silverlight, Twitter, Dynamics CRM, SharePoint 2010, PowerPivot, LinkedIn and Bing Maps. As you probably understand by that list of technologies, this was no ordinary Word add-in. It is one of the biggest mash-ups of technologies I have ever worked with.

And, as usual, the timeline was awesome. Of course you only need three weeks to build something like that, with two developers and a project manager. And yeah, let's throw in some conference calls every week, where the client shifts the requirements once in a while. And when the client wasn't shifting it, our own Director of Strategy and Innovation, Chris Auld, did it all on his own...

The demo script revolved around a company called Fabrikam Fitness (yes, that stalwart multinational conglomerate), which sells fitness equipment. The CEO of Fabrikam Fitness is a bit old school. He doesn't really like stuff like smartphones and computers. He prefers a good old piece of paper with the information on it. So every time he goes out to talk to a client, his assistant has to sit down and create a client summary and print it out for him. This involves sitting down and pulling information from various resources such as CRM and SharePoint. On top of that, she generally creates some graphs using Excel. And a lot of times she brings in a map image and some driving instructions so he can find his way. This normally takes her quite a bit of time, and she has to do it quite often. So the idea is to automate some of this work for her. And I say some of it, as there will almost always be some changes that she will have to do herself.

So the plan is to pull out all of the standard information for her automatically using a Word add-in. But to make it a bit more appealing to the eye, we decided to step away from the regular WinForms based add-in style and build it using WPF. This has pros and cons, but with a structured approach, it makes the development, and especially the design experience, so much better. Throughout the project, I used VS2010 for the code aspects and Expression Blend 4 for all of the design and integration work. And it is really cool to see how fast it is to pull together a good looking UI when you have used the right patterns and the right tools. In this case the UI doesn't look as flash as it could, I admit. But the idea was to keep it close to the design used by Word instead of standing out... We wanted a seamless and integrated look; WPF is good for business apps too!

The add-in pulls out the current clients from CRM and offers the user to select what client to work with. As soon as the right client has been selected, it shows the last 12 months of accumulated sales in different categories based on the data in CRM. It also pulls out the client employees from CRM and, if an employee has a LinkedIn profile defined, it goes off and pulls down a picture of the employee from the internet. The client’s location is shown on an interactive map by reverse geocoding the address using Bing Map services. But just showing it on the map is not really that helpful in some cases, so it also offers turn-by-turn navigation instructions from an address defined by the user. This is also done using the Bing Map services.

And since social media is getting more and more important, we decided to get the latest tweets that included the client’s twitter id. That way, the boss can see what people are saying about the client and if there are any obvious "issues." The add-in also shows the client’s service cases. Whenever there is a problem, the client will notify Fabrikam Fitness and it will be logged in CRM. So the add-in pulls out this data as well. It also checks the client’s satisfaction level on closed service cases and compares the client’s overall satisfaction with the overall satisfaction of all Fabrikam Fitness clients.

The final piece of information shown in the add-in is a list of faults in the equipment. Most of Fabrikam's equipment has a built in computer that will notify the company if something goes wrong. This makes it easy for Fabrikam to send out people to repair the equipment as soon as something happens, and relieves the client from the task of calling in a problem. All of this data is stored in CRM as well, but it is handled by the add-in in a slightly different way. As we are talking about huge amounts of data, we decided to use Power Pivot to handle it. Power Pivot is an add-on to Excel that makes it possible to pull large amounts of data from various sources and manipulate/show them in easy to understand form inside Excel. The spread sheet with this data is stored inside SharePoint, which makes it easy for the add-in to pull out the required information using a REST API available in Excel Services within SharePoint 2010. The add-in pulls out both text data and a predefined graph from the spread sheet.

So what can one do with all that information? Well, since the boss likes to have all of this information on paper to read before going to a meeting, we have of course added the possibility to add each individual part of the information to the current document with a simple click. As soon as the Word add-in is activated, it will load up a template document that is pre-formatted and ready to get the information added. So, Sally only has to click on a few buttons to add the information that the boss wants. But seeing that is just a regular Word document, she can also change the layout at content in whatever way she feels like. And at the end, when she is happy with the briefing document, she can store it in the company's SharePoint document repository using the built in "Save & Send" feature before printing it out and handing it to the boss.

In the end, Sally has a tool that makes her life a lot easier and offers the boss a standardised summary for each client. And with the structured architecture that we used, it is easy to add more functionality to it if needed.

I believe in learning something from everything I do, and most of the time that is possible even in the small things. So, what have I learnt from this? Well, first of all, I have learnt that I shouldn’t judge a project based on the initial information. The second thing that I have learnt from it is connected to the same idea. A Word add-in can be cool. But the most important lesson that I take away from this is that a well thought through and built Office add-in can turn your regular Office program into a real business tool. It can crate things in a standardised way, and ease the burden for the people working with it. It can also save money by making common tasks easier and faster. And the most important thing for me – it can make boring tasks fast and smooth. I just wish I could make an add-in that would fill out my timesheet with a single button click…

Posted by: Chris Klug, Senior Developer | 16 June 2010

Tags: SharePoint 2010, Dynamics CRM, Office add-in, VSTO

Top Rated Posts

Blog archive

Stay up to date with all insights from the Intergen blog