Microsoft CRM: Knowledge Conversion – Import from Act!

Finest Software program Act! may be very common CRM for small and mid-size group. This method attracts enterprise proprietor by its low value, plus system may be very simple to make use of. Nevertheless if your corporation is rising you need to attain the second to implement extra superior CRM answer. Pure query is – how can we convert the information from Act! to new CRM answer and the mapping of your objects for conversion. You’d most likely wish to keep away from operator knowledge entry with potential quite a few errors and mistypes. Assuming that you’re IT specialist, we’ll offer you technical facet of Act to MS CRM knowledge migration:

o First you might want to obtain Act! SDK from Finest Software program web site

o Set up Act! SDK on the pc, the place you intend to do programming

o We’ll use asynchronous knowledge export/import mannequin, because of this we’ll design the system, containing two components: export into XML and this XML file import into the CRM

o Lets code Act! knowledge export software, we’ll use C# to handle Act Framework courses, we’ll want these libraries:

utilizing Act.Framework;

utilizing Act.Framework.Actions;

utilizing Act.Framework.Corporations;

utilizing Act.Framework.ComponentModel;

utilizing Act.Framework.Contacts;

utilizing Act.Framework.Database;

utilizing Act.Framework.Teams;

utilizing Act.Framework.Histories;

utilizing Act.Framework.Lookups;

utilizing Act.Framework.MutableEntities;

utilizing Act.Framework.Notes;

utilizing Act.Framework.Alternatives;

utilizing Act.Framework.Customers;

utilizing Act.Shared.Collections;

o To hook up with Act! database:

ActFramework framework = new ActFramework();

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

o Now we’d like Act area names to map them with the fields within the MS CRM:

personal void ShowContactsFieldsDescriptions(ActFramework framework) {

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

ContactFieldDescriptor cField;

for(int x = 0; x « ;

ContactFieldDescriptor cField;

Object oValue;

// First Identify

cField = framework.Contacts.GetContactFieldDescriptor(« TBL_CONTACT.FIRSTNAME »);

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

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

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

// Final Identify

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(), « rn », « 
« ) + « ]] »;

o That is solely portion of the information, that could possibly be transferred into CRM, the entire listing of fields is just too lengthy for small article, however your may design the entire listing of desired fields. Please, pay particular consideration to interchange

HTML tag – that is required for textual content knowledge switch into CRM

o Subsequent is import software creation. We won’t describe right here connection to MS CRM particulars – please learn Microsoft CRM SDK in case you want this examples. We’ll consider the character of the import.

The XML export file ought to appear to be 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}

o Studying, parsing and MS CRM object creation look is comparatively easy:

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 enter = null;

whereas ((enter = reader.ReadLine()) != null)

{

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

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

log.Debug(« Contact  » + strContactId +  » is created »);

}

o Simply think about in additional particulars CorrectXML operate – it locations OwnerId into XML contact tree:

personal void CorrectXML(string fileName, string userId) {

File.Transfer(fileName, fileName + « .outdated »);

StreamReader reader = File.OpenText(fileName + « .outdated »);

FileInfo t = new FileInfo(fileName);

StreamWriter author = t.CreateText();

string enter = null;

whereas ((enter = reader.ReadLine()) != null)

{

enter = Regex.Exchange(enter, « {_REPLACE_ME_} », userId);

author.WriteLine(enter);

}

reader.Shut();

author.Shut();

File.Delete(fileName + « .outdated »);

}

o Lastly, we’re launching export, import, opening MS CRM and searching on the contact listing, transferred from Act!

o Separate job could be Gross sales knowledge from Act!, Notes and many others. – we plan to explain them sooner or later articles

Good luck with integration! If you need us to do the job – give us a name 1-630-961-5918 or 1-866-528-0577! assist@albaspectrum.com

Microsoft CRM: Knowledge Conversion – Import from Act!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut