Archive for the ‘CRM Integrations’ Category

Generate Excel 2007 Sheets from MSCRM Data – OpenXML Show

Saturday, March 1st, 2008 |

Office Open XML is an XML-based file format specification for electronic documents such as memos, reports, books, spreadsheets, charts, presentations and word processing documents. The specification has been developed by Microsoft as a successor of its binary office file formats and was published by Ecma International as the Ecma 376 standard in December 2006. The format specification is available for free at Ecma International.

Let me introduce you the technique I have used to generate the Excel 2007 sheet from CRM data. I have downloaded an Excel package. ExcelPackage provides server-side generation of Excel 2007 spreadsheets. See http://www.codeplex.com/ExcelPackage for details.

Specifying Output Directory and Template Directory

Output directory is where you place the generated excel file and Template directory is where you place the template file. Template file is simply a .xlsx file without data. Use following code to specify both directories.

DirectoryInfo outputDir = new DirectoryInfo(@”\GenerateExcel\output”);
DirectoryInfo templateDir = new DirectoryInfo(@”\GenerateExcel\templates”);
FileInfo newFile = new FileInfo(outputDir.FullName + @”\File-” + strRecordID + “.xlsx”);
FileInfo template = new FileInfo(templateDir.FullName + @”\TempReport.xlsx”);
if (!template.Exists)
throw new Exception(”Template file does not exist! i.e. template.xlsx”);

Write data to Excel File

ExcelPackage contains library functions for accessing worksheet, cells etc. For details please have a look into the Excel package code. Uses following code to write data to individual cell in excel worksheet.

using (ExcelPackage xlPackage = new ExcelPackage(newFile, template))
{
try
{
ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[”Sheet1″];
if (worksheet != null)
{
worksheet.Cell(2, 9).Value = ClearText(strData);
xlPackage.Save();
}
}
catch (Exception ex)
{ }
}

Adding Rows to Sheet

worksheet.InsertRow(iRow);

Return Excel File for Download

Simply redirect the response object in ASP.NET to the excel file generated.

Response.Redirect(”http://” + Request.Url.Host + “:” + Request.Url.Port + “/” + “GenerateExcel/output/” + newFile.Name);

All cell styles, formates and pictures objects that you set once in Template will remain the same in the generated file.

Please find below my sample quote geneation application. I have placed a button at Quotes toolbar named Generate Quote. It will generate quote report in excel 2007 with the Quote data from crm currently selected.

pic1.jpg

My program fetches data from MSCRM through web services and populated my Excel sheet. It then returns my generated excel sheet with options to open or download.

pic2.jpg

Snap-ins for Microsoft Dynamics CRM 3.0

Sunday, February 24th, 2008 |

Snap-in applications enable you and your people to work within the familiar environments of Microsoft Office applications, such as Microsoft Office Outlook, Word, Excel, and SharePoint Server. Microsoft Dynamics Snap is a collection of products for Microsoft Office 2003/2007 users to work with certain Microsoft Dynamics applications. Snap-ins allow Microsoft Office users to interact with data and business processes from Microsoft Dynamics applications as they create documents, collaborate and manage their calendar—all without having to leave Microsoft Office. The following Microsoft Dynamics Snap for Microsoft Dynamics CRM 3.0 applications are available today in Technical Pre-release and are distributed under the Microsoft Permissive License. Microsoft partners can easily extend and customize the applications, and even use components within applications they’ve developed.

  • Business Data Search
  • Business Data Lookup
  • Custom Report Generator
  • Customer Journal

For more information, please look at:

MSCRM and MapPoint Integration - A picture is worth a thousand words.

Monday, February 11th, 2008 |

Microsoft Provides MapPoint Web Service to enrich application with mapping functionality. It allows you to integrate maps, driving directions, order tracking and proximity searches into a wide range of solutions.

For those of you who want to start using MapPoint for test and development purposes you can sign up for a free developer account here:

htt
ps://mappoint-css.partners.extranet.microsoft.com/MwsSignup/Eval.aspx

With a developer account, you get full access to the MapPoint Web Service APIs and staging environment, which you can use to build applications for trial, demonstration, and proof-of-concept purposes.

Overview

Overview

Microsoft Dynamics CRM Account entity already has longitude and latitude parameters for address. But mostly organizations don’t use those parameters. MapPoint web service provides FindAddress service to resolve addresses and returns longitude and latitude parameter as shown in the code snippet below. 


Find Address Longitude and Latitude FindServiceSoap FindService = new FindServiceSoap ();
FindService.Credentials = new NetworkCredential(””, “”);
FindService.PreAuthenticate = true;
MyAddress mAddress = new MyAddress(); mAddress = (MyAddress)addresses[i];FindAddressSpecification spec = new FindAddressSpecification();
spec.InputAddress = new Address();
spec.InputAddress.AddressLine = mAddress.Line1;
spec.InputAddress.CountryRegion = mAddress.Country;
spec.InputAddress.Subdivision = mAddress.StateProvince;
spec.InputAddress.PrimaryCity = mAddress.City;
spec.InputAddress.PostalCode = mAddress.Postalcode;
spec.DataSourceName = “MapPoint.NA”;
FindResults results = FindService.FindAddress(spec);
Populating Location and Pushpin Array Location and pushpins objects require longitude and latitude values for address. Following code is used to populate Location and Pushpin objects of MapPoint API. 


Location[] myLocation = new Location[addresses.Count];myLocation[i] = new Location();
myLocation[i].LatLong = new LatLong();
myLocation[i].LatLong = results.Results[0].FoundLocation.LatLong;
Pushpin[] pushpins = new Pushpin [addresses.Count]; pushpins[i] = new Pushpin();
pushpins[i].PinID = “pin0″;
pushpins[i].IconName = “0″;
pushpins[i].Label = mAddress.Name;
pushpins[i].IconDataSource = “MapPoint.Icons”;
pushpins[i].LatLong = results.Results[0].FoundLocation.LatLong;
There is no simple way to provide hyperlink at Pushpins, although Pushpin label and icon can be set to custom settings.  
Getting image and automatic zoom based on the geography covered by the addresses


MapPoint Web Service provides Render Service API to automatic zoom based on the geography covered by addresses. Here is the code snippet to do this: //Call MapPoint Render Web Service RenderServiceSoap RenderService = new RenderServiceSoap();
RenderService.Credentials = new NetworkCredential(””, “”);
MapViewRepresentations mvRep = RenderService.GetBestMapView(myLocation,”MapPoint.NA”);
mviews[0] = new ViewByBoundingRectangle();
mviews[0] = mvRep.ByBoundingRectangle;
MapSpecification mspec = new MapSpecification();
mspec.Options = moptions;
mspec.Views = mviews;
mspec.Pushpins = pushpins;
mspec.DataSourceName = “MapPoint.NA”;
MapImage[] image = RenderService.GetMap(mspec); So the final image can be displayed in some ASP.NET page to show in Microsoft Dynamics CRM. Please find below my integration of MapPoint web service with MSCRM. One can select Accounts to be plotted on MapPoint and click
Show Accounts Map Button

at Account Entity grid toolbar.  All selected accounts will be plotted on the MapPoint in a new web dialog with Invalid addresses at the bottom.   Step 1 
 Here is the final Image generated in Web Dialog:
Step 2 
 For any comments or suggestion do let me know. Your suggestions and comments are valuable for me. Thanks!

Welcome

PowerObjects Microsoft CRM blog is place where PowerObjects CRM team will share its Microsoft CRM knowledge with rest of the world.More

Find entries :