Microsoft CRM: Data Conversion ? Import from Act!

Best Software Act! is very popular CRM for small and mid-size organization. This system attracts business owner by its low price, plus system is very easy to use. However if your business is growing you should reach the moment to implement more advanced CRM solution. Natural question is ? how do we convert the data from Act! to new CRM solution and the mapping of your objects for conversion. You would probably like to avoid operator data entry with potential numerous errors and mistypes. Assuming that you are IT specialist, we'll give you technical side of Act to MS CRM data migration:

? First you need to download Act! SDK from Best Software website

? Install Act! SDK on the computer, where you plan to do programming

? We'll use asynchronous data export/import model, this means that we'll design the system, containing two parts: export into XML and this XML file import into the CRM

? Lets code Act! data export application, we'll use C# to address Act Framework classes, we'll need these libraries:

using Act.Framework;
using Act.Framework.Activities;
using Act.Framework.Companies;
using Act.Framework.ComponentModel;
using Act.Framework.Contacts;
using Act.Framework.Database;
using Act.Framework.Groups;
using Act.Framework.Histories;
using Act.Framework.Lookups;
using Act.Framework.MutableEntities;
using Act.Framework.Notes;
using Act.Framework.Opportunities;
using Act.Framework.Users;
using Act.Shared.Collections;

? To connect to Act! database:

ActFramework framework = new ActFramework();

framework.LogOn("Act Username", "password", "SERVER", "Database");

? Now we need Act field names to map them with the fields in the MS CRM:

private void ShowContactsFieldsDescriptions(ActFramework framework) {

ContactFieldDescriptor[] cFields = framework.Contacts.GetContactFieldDescriptors();

ContactFieldDescriptor cField;

for(int x = 0; x < cFields.Length; x++)

{

cField = cFields[x];

Console.WriteLine("Table Name: {0}", cField.TableName);

Console.WriteLine("Column Name: {0}", cField.ColumnName);

Console.WriteLine("Display Name: {0}", cField.DisplayName);

Console.WriteLine("ACT Field Type: {0}", cField.ACTFieldType);

Console.WriteLine("");

}

}

? Let's get contact list and create the file for import instructions to MS CRM:

ContactList cList = framework.Contacts.GetContacts(null);

FileInfo t = new FileInfo("Contacts.xml");

StreamWriter stw = t.CreateText();

? Now we form export data:

for (int i = 0; i < cList.Count; i++) {

string strContactXml = "";

ContactFieldDescriptor cField;

Object oValue;

// First Name

cField = framework.Contacts.GetContactFieldDescriptor("TBL_CONTACT.FIRSTNAME");

oValue = cField.GetValue(cList[i]);

if (oValue != null && !(oValue.ToString().Trim().Equals("")))

strContactXml += "[CDATA[" + oValue.ToString() + "]]";

// Last Name

cField = framework.Contacts.GetContactFieldDescriptor("TBL_CONTACT.LASTNAME");

oValue = cField.GetValue(cList[i]);

if (oValue != null && !(oValue.ToString().Trim().Equals("")))

strContactXml += "[CDATA[" + oValue.ToString() + "]]";

else

strContactXml += "" + "N/A" + "";

// Salutation

cField = framework.Contacts.GetContactFieldDescriptor("TBL_CONTACT.SALUTATION");

oValue = cField.GetValue(cList[i]);

if (oValue != null && !(oValue.ToString().Trim().Equals("")))

strContactXml += "[CDATA[" + oValue.ToString() + "]]";

// Job Title

cField = framework.Contacts.GetContactFieldDescriptor("TBL_CONTACT.JOBTITLE");

oValue = cField.GetValue(cList[i]);

if (oValue != null && !(oValue.ToString().Trim().Equals("")))

strContactXml += "[CDATA[" + Regex.Replace(oValue.ToString(), " ", "
") + "]]";

? This is only portion of the data, that could be transferred into CRM, the whole list of fields is too long for small article, but your could design the whole list of desired fields. Please, pay special attention to replace
HTML tag ? this is required for text data transfer into CRM

? Next is import application creation. We will not describe here connection to MS CRM details ? please read Microsoft CRM SDK if you need this examples. We'll concentrate on the nature of the import.

The XML export file should look like this:

[CDATA[John]][CDATA[Smith]][CDATA[John]][CDATA[1234 W. Big River]][CDATA[Chicago]][CDATA[IL]][CDATA[123456]][CDATA[Toy Corporation]]{4F1849C3-9184-48B5-BB09-078ED7AB2DAD}

? Reading, parsing and MS CRM object creation look is relatively simple:

Microsoft.Crm.Platform.Proxy.BizUser bizUser = new Microsoft.Crm.Platform.Proxy.BizUser();

ICredentials credentials = new NetworkCredential(crmUsername, crmPassword, crmDomain);

bizUser.Url = crmDir + "BizUser.srf";

bizUser.Credentials = credentials;

Microsoft.Crm.Platform.Proxy.CUserAuth userAuth = bizUser.WhoAmI();

// CRMContact proxy object

Microsoft.Crm.Platform.Proxy.CRMContact contact = new Microsoft.Crm.Platform.Proxy.CRMContact ();

contact.Credentials = credentials;

contact.Url = crmDir + "CRMContact.srf";

CorrectXML("Contacts.xml", userAuth.UserId);

StreamReader reader = File.OpenText("Contacts.xml");

string input = null;

while ((input = reader.ReadLine()) != null)

{

string strContactId = contact.Create(userAuth, input);

Console.WriteLine("Contact {0} is created", strContactId);

log.Debug("Contact " + strContactId + " is created");

}

? Just consider in more details CorrectXML function ? it places OwnerId into XML contact tree:

private void CorrectXML(string fileName, string userId) {

File.Move(fileName, fileName + ".old");

StreamReader reader = File.OpenText(fileName + ".old");

FileInfo t = new FileInfo(fileName);

StreamWriter writer = t.CreateText();

string input = null;

while ((input = reader.ReadLine()) != null)

{

input = Regex.Replace(input, "{_REPLACE_ME_}", userId);

writer.WriteLine(input);

}

reader.Close();

writer.Close();

Fi le.Delete(fileName + ".old");

}

? Finally, we are launching export, import, opening MS CRM and looking at the contact list, transferred from Act!

? Separate task would be Sales data from Act!, Notes etc. ? we plan to describe them in the future articles

Good luck with integration! If you want us to do the job - give us a call 1-630-961-5918 or 1-866-528-0577! help@albaspectrum.com

Andrew Karasev is Lead Software Developer in Alba Spectrum Technologies ? USA nationwide Great Plains, Microsoft CRM customization company, serving clients in Chicago, Houston, Atlanta, Phoenix, New York, Los Angeles, San Francisco, San Diego, Miami, Denver, UK, Australia, Canada, Europe and having locations in multiple states and internationally ( http://www.albaspectrum.com )

In The News:


pen paper and inkwell


cat break through


Microsoft Business Solutions Products Selection: ERP, CRM, Retail Management

Let's first look at your ERP system selection (without Retail... Read More

Microsoft Navision Customization and Reporting ? Tips For Programmer/IT Specialist

C/SIDE (Client/Server Integrated Development Environment) - The core of... Read More

Software Engineering: An Introduction

Software Engineering is the Systematic Approach for analysis design implementation... Read More

Microsoft Navision Integration with Microsoft RMS - Overview for IT Specialist

Microsoft Business Solutions Navision serves both European and American megamarkets.... Read More

A Simple Computer Software Definition

What is Software?Software is a set of instruction written to... Read More

Perfectly New Database Query Tool - Foxy SQL Pro Released

Are you a database professional? Do you work with a... Read More

Configure Windows Indexing Service for Performance

The Windows Indexing Service provides you with the ability to... Read More

25 Things Mapping Software Can Do For You

1. With mapping software you can create a report that... Read More

Free Preventive Maintenance Software

While several preventive maintenance software manufacturers offer free trials for... Read More

Why Java RDBMS?

It is a well known fact that Java as a... Read More

Free Program Removes Spyware not Detected by Premium Security Scan

What is Spyware?Spyware monitors your surfing habits and sends the... Read More

Create ASP in Minutes

DBxtra goes ASPGetting to the information hidden within corporate databases... Read More

eCommerce development for Microsoft Great Plains: tools and highlights for programmer

Microsoft Business Solutions Great Plains, former Great Plains Software Dynamics... Read More

Microsoft Great Plains Subcontracting ? Overview for Microsoft Business Solutions Partner

Microsoft Business Solutions Great Plains is very popular ERP/MRP applications... Read More

Is Your Computer Sick?

Viruses and spyware usually show up on your computer one... Read More

How To Develop Software For Your Business

Software development is a risky business.Many software developers are barely... Read More

Reduce TCO: The Java Database Way

TCO (Total Cost Ownership) is the buzzword in... Read More

Programming Environments And The Software Production Process

Introduction: The creating of a computer program involves a number... Read More

Linux Dual Boot-How To Format

Just the thought of a duel-boot scares many people away,... Read More

A Case Study on Selecting Contract Management Software

Professional services firm cuts costs and improves productivity with integrated... Read More

What Stands Behind The Software Description?

With thousands of web pages added to the Net every... Read More

Begun, The Browser Wars Have

As Mozilla Firefox nears 10% market share, with well over... Read More

These Items Are A Must Before Making The Decision To Purchase Any Off-The-Shelf Software

1. What determines the software price? Is it Per Seat... Read More

Microsoft Great Plains Oil & Gas ? Implementation & Customization Highlights

Microsoft Great Plains serves the wide spectrum of horizontal markets.... Read More

Most Dangerous Types of Spyware are on the Rise: How to Choose the Weapon

Bad News - the Threat is Bigger than it SeemedHow... Read More

How to Choose the BEST Charting Software

I suggest that you do not spend a lot of... Read More

Microsoft Great Plains international implementation ? USA / Mexico ? overview for consultant

Microsoft Business Solutions Great Plains was purchased from Great Plains... Read More

Getting Patched with Windows Service Pack

Are you one of those people that keeps track of... Read More

Microsoft Great Plains implementation: Restaurants Supply Chain Management Example

Microsoft Great Plains serves majority of US based horizontal and... Read More

Falling in Love With More Than One Screensaver: The Fun Part

Having from five to ten and more favorite screensavers is... Read More

What is Fleet Maintenance Management?

Fleet Maintenance Management is a critical position in any company... Read More

New SQL Delta Version 3.1

COMMAND LINE FUNCTIONA powerful command line script processor has been... Read More

Information Products: A Business Owners Best Friend

We live in a post-industrial age where information is the... Read More