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 )
Let's first look at your ERP system selection (without Retail... Read More
C/SIDE (Client/Server Integrated Development Environment) - The core of... Read More
Software Engineering is the Systematic Approach for analysis design implementation... Read More
Microsoft Business Solutions Navision serves both European and American megamarkets.... Read More
What is Software?Software is a set of instruction written to... Read More
Are you a database professional? Do you work with a... Read More
The Windows Indexing Service provides you with the ability to... Read More
1. With mapping software you can create a report that... Read More
While several preventive maintenance software manufacturers offer free trials for... Read More
It is a well known fact that Java as a... Read More
What is Spyware?Spyware monitors your surfing habits and sends the... Read More
DBxtra goes ASPGetting to the information hidden within corporate databases... Read More
Microsoft Business Solutions Great Plains, former Great Plains Software Dynamics... Read More
Microsoft Business Solutions Great Plains is very popular ERP/MRP applications... Read More
Viruses and spyware usually show up on your computer one... Read More
Software development is a risky business.Many software developers are barely... Read More
TCO (Total Cost Ownership) is the buzzword in... Read More
Introduction: The creating of a computer program involves a number... Read More
Just the thought of a duel-boot scares many people away,... Read More
Professional services firm cuts costs and improves productivity with integrated... Read More
With thousands of web pages added to the Net every... Read More
As Mozilla Firefox nears 10% market share, with well over... Read More
1. What determines the software price? Is it Per Seat... Read More
Microsoft Great Plains serves the wide spectrum of horizontal markets.... Read More
Bad News - the Threat is Bigger than it SeemedHow... Read More
I suggest that you do not spend a lot of... Read More
Microsoft Business Solutions Great Plains was purchased from Great Plains... Read More
Are you one of those people that keeps track of... Read More
Microsoft Great Plains serves majority of US based horizontal and... Read More
Having from five to ten and more favorite screensavers is... Read More
Fleet Maintenance Management is a critical position in any company... Read More
COMMAND LINE FUNCTIONA powerful command line script processor has been... Read More
We live in a post-industrial age where information is the... Read More
Learning how to program software seems like a daunting task... Read More
Microsoft CRM is CRM application, maintained and supported by Microsoft... Read More
Mike Dunville* had a decision to make. As the new... Read More
What is Tripwire?Tripwire is a form intrusion detection system (IDS)... Read More
Microsoft Business Solutions Great Plains has full-featured manufacturing set of... Read More
Which Type of Shop Can Rely On A Home Built... Read More
What is IRC?IRC is Internet Relay Chat. It is a... Read More
Midsize business or non-profit organization should decide if one-vendor solution... Read More
What is Groupware?Have you ever had to manage document collaboration... Read More
Features Additionally, Vista will include many other new features.Aero Vista... Read More
Task Manager is a Windows system utility that displays thetasks... Read More
Buying accounting software is a major investment. It's an important... Read More
Are you a whiz at calculating financial information? Not the... Read More
Have you ever noticed that when you look at your... Read More
Microsoft Business Solutions Great Plains is marketed for mid-size companies... Read More
Have you noticed WordPerfect is gearing up for a comeback... Read More
Microsoft Great Plains is main Microsoft Business Solutions accounting package... Read More
Microsoft Retail Management System serves retail single store as well... Read More
When Great Plains Software was designing and developing Great Plains... Read More
When it comes to screenplay software each screenwriter needs to... Read More
What is Snort?Snort is an open source network intrusion detection... Read More
The Microsoft system preparation utility for Windows 2000 is a... Read More
Before being able to choose a secure Internet communication system,... Read More
Preventive Maintenance (PM) is defined as scheduled work done on... Read More
IBM Lotus Notes with Domino email server is traditional document... Read More
The vast majority of us will have, at some point,... Read More
You would like to protect your documents, wouldn't you? Reasons... Read More
Whether you are a small consultancy firm, a medium sized... Read More
Microsoft Business Solutions Great Plains, former Great Plains Software Dynamics... Read More
One of the things we can be as certain of... Read More
Shareware has been fighting the stigma of being misunderstood for... Read More
2005 ? Back to the Future.What does the future hold?... Read More
Ok... Where to start?Well, I guess I will start at... Read More
Software |