Thursday, May 29, 2008

Web Based CRM Solutions

CRM solutions are business strategies that assist in building a healthy relationship with customers. They have become a milestone in the marketing strategies of modern business organizations. Earlier, CRM solutions had been based on client-server architecture. A few draw backs of the client-server model CRM solutions led to the development of web based CRM solutions. Web based CRM solutions are business strategies intended mainly for e-commerce.

As the World Wide Web serves as the platform in web based CRM solutions, the software need be installed on a single server. The installed software can be accessed from any remote location, and any change made in the software will be reflected throughout the system. The client-server model CRM solutions do not support remote access or wireless devices. But, web based CRM solutions have facilities to access wireless devices like PDAs and WAP-enabled mobile phones.

In a web based CRM solution, only the central server has to be maintained. Thus, web based CRM solutions are very cost effective. When compared with client-server CRM solutions, web based CRM solutions are more flexible and easy to maintain. As the web based CRM solutions are based on Web, they can be distributed faster than the conventional CRM solutions and client-server CRM solutions. Also, adding of new clients in a web based CRM solution is very easy. The number of users in web based CRM solution is unlimited.

Netgain, Upshot, SAP, Clarify, ONYX, Trilogy, Oracle, Siebel Systems, and Firstwave Technologies, Inc. are some of the leading vendors in the web based CRM solutions.

CRM Solutions provides detailed information on CRM Solutions, CRM Business Solutions, CRM Call Center Solutions, CRM Software Solutions and more. CRM Solutions is affiliated with Live Customer Support.

Labels: , , , , , ,

Tuesday, May 13, 2008

Industrial CRM Leader Commence Profiled in Manufacturing.net


In Manufacturing.net, manufacturing journalist Thomas R. Cutler notes, "Some ERP vendors offer industry specific CRM solutions; many do not. Bolt-on generic CRM solutions are frequently sold as the panacea; few are."

Commence offers industrial companies complete "Freedom of Choice" to select the solutions and platform that best meets the business requirements of manufacturers and distributors. The comprehensive CRM Industrial application suite is available for use on premise or on-demand as a hosted service. Industrial leaders often build departmental CRM solutions with the award winning Commence Industrial CRM Framework. These choices are why so many industrial companies choose Commence as the solution for managing customer relationships. All Commence Industrial solutions support mobile or wireless connectivity and integration to back-office accounting and ERP systems.

Larry Caretsky, President of New Jersey-based Commence, (www.commence.com/mfg), developers of a stand alone industrial CRM solution, suggested that most ERP companies offering CRM have shortfalls. "Managing the sales cycle and sales representative performance, marketing campaign management and integration with customer support are not provided by ERP tools," he said. CRM is not the strength for most ERP systems, which often utilize an add-on module but are rarely a full CRM package. In many cases, industrial customers who require full CRM capabilities are relegated to third party products or services.

Stand alone industrial CRM solutions provide effective lean CRM processes as long as the vendor truly understands the nuances and idiosyncrasies of the manufacturing sector; most do not. Generic databases do not address central issues facing all industrial operations. According to Caretsky, "Smart industrial organizations gather several key data points during customer research, which helps to define a CRM profile."

According to Cutler, "Expertise in industrial CRM is more significant than whether fully integrated in an ERP system or stand alone industrial CRM; vendor experience in industrial sales and marketing trumps the selection of technology." The complete feature article may be read at http://manufacturing.net/article/CA6363848.html.

Commence Corporation www.commence.com/mfg/ Larry Caretsky Marketing@commence.com 732-380-9100

Labels: , , , ,

Tuesday, November 27, 2007

Microsoft CRM Customization secrets second edition

This article is for advanced Microsoft CRM SDK C# developers. It describes the technique of direct SQL programming, when SDK doesn't have the functionality to do the job.

Introduction. Looks like Microsoft CRM becomes more and more popular, partly because of Microsoft muscles behind it. Now it is targeted to the whole spectrum of horizontal and vertical market clientele. It is tightly integrated with other Microsoft Business Solutions products such as Microsoft Great Plains, Solomon, Navision (the last two in progress).

Here we describe the technique of creating closed activity-email using MS CRM SDK and direct SQL programming.

Imaging something like this. You need to handle incoming email before it is committed to MS Exchange database. You need to analyze if incoming email doesn't have GUID in its Subject (GUID will allow MS CRM Exchange Connector to move email to Microsoft CRM and attach it to the Contact, Account or Lead) - then you still need to lookup MS CRM in case if one of the accounts, contacts or leads has email address that matches with sender email address - then you need to create closed activity-email in MS CRM, attached to the object and placed into general queue.

How to create MS Exchange handler is outside of the scope, please see this article:


http://www.albaspectrum.com/Customizations_Whitepapers/Dexterity_SQL_VBA_Crystal/ExchangeHandlerExample.htm

Now the code below is classical MS CRM SDK and it will create activity email:


 

public Guid CreateEmailActivity(Guid userId, int objectType, Guid objectId, string mailFrom, CRMUser crmUser, string subject, string body) {

try {

log.Debug("Prepare for Mail Activity Creating");

// BizUser proxy object

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

ICredentials credentials = new NetworkCredential(sysUserId, sysPassword, sysDomain);

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

bizUser.Credentials = credentials;

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

// CRMEmail proxy object

Microsoft.Crm.Platform.Proxy.CRMEmail email = new Microsoft.Crm.Platform.Proxy.CRMEmail();

email.Credentials = credentials;

email.Url = crmDir + "CRMEmail.srf";

// Set up the XML string for the activity

string strActivityXml = "";

strActivityXml += "";

strActivityXml += "") + "]]>";

strActivityXml += "";

strActivityXml += userId.ToString("B") + "";

strActivityXml += "";

// Set up the XML string for the activity parties

string strPartiesXml = "";

strPartiesXml += "";

strPartiesXml += "" + crmUser.GetEmailAddress() + "";

strPartiesXml += "" + Microsoft.Crm.Platform.Types.ObjectType.otSystemUser.ToString() + "";

strPartiesXml += ""+ crmUser.GetId().ToString("B") + "";

strPartiesXml += "";

strPartiesXml += Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_TO_RECIPIENT.ToString();

strPartiesXml += "";

strPartiesXml += "";

strPartiesXml += "";

strPartiesXml += "" + mailFrom + "";

if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otAccount) {

strPartiesXml += "" + Microsoft.Crm.Platform.Types.ObjectType.otAccount.ToString() + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otContact) {

strPartiesXml += "" + Microsoft.Crm.Platform.Types.ObjectType.otContact.ToString() + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otLead) {

strPartiesXml += "" + Microsoft.Crm.Platform.Types.ObjectType.otLead.ToString() + "";

}

strPartiesXml += ""+ objectId.ToString("B") + "";

strPartiesXml += "";

strPartiesXml += Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_SENDER.ToString();

strPartiesXml += "";

strPartiesXml += "";

strPartiesXml += "";

log.Debug(strPartiesXml);

// Create the e-mail object

Guid emailId = new Guid(email.Create(userAuth, strActivityXml, strPartiesXml));

return emailId;

}

catch (System.Web.Services.Protocols.SoapException e) {

log.Debug("ErrorMessage: " + e.Message + " " + e.Detail.OuterXml + " Source: " + e.Source);

}

catch (Exception e) {

log.Debug(e.Message + "" + e.StackTrace);

}

return new Guid();

}

Our credits to Anna Osborn (so obviously small pocket aquarium goes to her smile!), she let us know how to close MS CRM Activity:

//creates the activity

strActivityId = oActivity.Create(userAuth, strXml, activityPartyXml);

//closes it as long as the relevant fields are complete oActivity.Close(userAuth, strActivityId, -1);

But in any case whatever you find below could help you to do whatever CRM SDK cant.

Now I would like to share the trick with you - there is no method to make this activity closed in MS CRM SDK 1.2 (if somebody knows the one - I owe you small pocket aquarium - smile!). Obviously Microsoft doesn't support if you do direct SQL programming bypassing SDK. However I would say this is not direct objects creation - this is rather flags correction. So here is what we have - this procedure will do the job and make activity closed:

public void UpdateActivityCodes(Guid emailId) {

try {

OleDbCommand command = conn.CreateCommand();

command.CommandText = "UPDATE ActivityBase SET DirectionCode = (?), StateCode = (?), PriorityCode = (?) WHERE ActivityId = (?)";

command.Prepare();

command.Parameters.Add(new OleDbParameter("DirectionCode", Microsoft.Crm.Platform.Types.EVENT_DIRECTION.ED_INCOMING));

command.Parameters.Add(new OleDbParameter("StateCode", Microsoft.Crm.Platform.Types.ACTIVITY_STATE.ACTS_CLOSED));

command.Parameters.Add(new OleDbParameter("PriorityCode", Microsoft.Crm.Platform.Types.PRIORITY_CODE.PC_MEDIUM));

command.Parameters.Add(new OleDbParameter("ActivityId", emailId));

log.Debug("Prepare to update activity code " + emailId.ToString("B") + " in ActivityBase");

command.ExecuteNonQuery();

}

catch(Exception e) {

log.Debug(e.Message + "" + e.StackTrace);

}

}


Happy customizing! if you want us to do the job - give us a call 1-866-528-0577! help@albaspectrum.com

Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies USA nationwide Microsoft CRM, Microsoft Great Plains customization company, based in Chicago, Arizona, California, Colorado, Texas, New York, Georgia, Florida, Canada, UK, Australia and having locations in multiple states and internationally , he is Dexterity, SQL, C#.Net, Crystal Reports and Microsoft CRM SDK developer


akarasev@albaspectrum.com

Labels: , , , , , ,