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


Scrap Booking Online: Word Perfect or Corel Graphics Suite?

Scrapbooks are very popular these days. I think that almost... Read More

Microsoft Great Plains: Large Scale Implementation

Microsoft Business Solutions Great Plains, Navision, Axapta, Solomon and CRM... Read More

Understanding XML Server

XML Server can be a Web Server that stores the... Read More

Selecting Microsoft Great Plains Partner/VAR/Reseller: ERP Implementation & Customization ? Overview

In the case when you represent mid-size or mid-size-to-large business,... Read More

IBM Lotus Domino or Microsoft Exchange?

IBM Lotus Domino or Microsoft Exchange?The severe competition continues for... Read More

10 Programming Tips

(1) Avoid using the same variable again and again for... Read More

What is Fleet Maintenance Software?

Simply put, fleet maintenance allows companies to monitor and maintain... Read More

Microsoft Great Plains Integrations - Tips for Developer

In this short FAQ style article we would like to... Read More

Microsoft Great Plains Integration with Microsoft Access ? Overview for Developer

... Read More

COSMIC: A Small Improvement on the Symons Method

The COSMIC FP (function point) software quality metric, is no... Read More

Algebra Help Software

Need help making sense of algebra? Have algebra lectures in... Read More

SpyBot - Search and Destroy versus Microsoft AntiSpyware (Beta).... My personal experiences...

Ok... Where to start?Well, I guess I will start at... Read More

Perfectly New Database Query Tool - Foxy SQL Pro Released

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

Microsoft Great Plains GL: General Ledger ? Overview For Consultant

Microsoft Business Solutions Great Plains is marketed for mid-size companies... Read More

Integrating Microsoft Great Plains Accounting/ERP: RMS, CRM, eCommerce, Lotus Domino ? overview

Microsoft Business Solutions Great Plains has substantial market share among... Read More

Reporting Tools for Microsoft Great Plains ? Overview For Developers

Looks like Microsoft Great Plains becomes more and more popular,... Read More

Microsoft Great Plains Food Processing ? Implementation & Customization Highlights

Microsoft Great Plains might be considered as ERP platform to... Read More

Blind CC (Bcc): Master Its Use When E-Mailing

If you use Microsoft Outlook (or similar applications) for e-mailing,... Read More

Corporate ERP: Microsoft Great Plains For The Plant In Brazil ? Overview For CIO

Microsoft Business Solutions Great Plains as new ERP for multinational... Read More

Corporate ERP Selection: Microsoft Great Plains

In our opinion, traditional approach when you select ERP/MRP system... Read More

Microsoft CRM Integration with IBM Lotus Notes Domino ? Machinery Dealership Example

IBM Lotus Notes with Domino email server is traditional document... Read More

Microsoft CRM ? Typical Customizations

Microsoft CRM was designed to be easily customizable. Microsoft CRM... Read More

Understanding Document Management

The term "document management" and "paperless office" is the subject... Read More

Microsoft Great Plains: Annual Enhancement Program ? How To Be Re-Enrolled

Microsoft Business Solutions Great Plains is mid and even corporate... Read More

Microsoft CRM Development

Microsoft CRM is CRM answer from Microsoft Business Solutions.The whole... Read More

Dashboard Widgets for Windows

For a windows user like me, just can watch with... Read More

Cisco Certification: Introduction To ISDN, Part V

The major reason I recommend getting your hands on real... Read More

Outlook... Not Just for Email! Using Your Outlook Calendar

Microsoft Outlook is one of the most widely used software... Read More

Corporate Accounting System: Microsoft Great Plains ? Overview

Corporate ERP/MRP selection might be tough one, especially considering very... Read More

Interactive Mapping Brings Information to Life

What is Interactive Mapping?Interactive mapping is a visual display medium... Read More

Microsoft Great Plains Project Accounting ? Overview For IT Director/Controller

Microsoft Business Solutions is now in process of creating so... Read More

Microsoft Great Plains Customization Recovery & Upgrade for Large Corporation

At the end of XX century, in the late 1990th... Read More

Selecting Corporate ERP: Microsoft Business Solutions Great Plains ? Estimation Parameters

As we could imagine, if you are reading this article... Read More