darkgrey.com darkgrey.com
  Index >> About Us >> Add Your Link >> Privacy Policy >> ToS >> Submit Article
Search:   
Add Url
 

Banking & Finance

Automobile & Automotive

Art & Culture

Shopping Online

Property & Agents

Medicine & Treatment

Employment & Careers

Self Help

Cooking & Drinking

People & Communities

Internet & Computers

Fitness & Health

Science & Space

Events & News

Garden & Home

Teens & Kids

Education & Reference

Games & Play

Sports & Adventure

Companies & Business

Fashion & Lifestyle

Travel & Vacation

Music & Entertainment

Law & Politics

 

Index » Internet & Computers » Paid Software
 

Microsoft CRM Programming Secrets - Tips For Developers

 
Author: Andrew Karasev

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 + "rn" + e.StackTrace); } return new Guid(); }

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 + "rn" + e.StackTrace);

} }

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

Author Bio:
Andrew Karasev is an expert on this subject. Andrew has written several articles in the past on this topic.
You can search for this article using: Microsoft CRM Programming Secrets - Tips For Developers, Internet & Computers, Paid Software
 
 
 

Related Articles

 
Five Neat, Free Software Programs
 
What Exactly Are Google AdWords?
 
Protect Your Computer...and Your Business!
 
Economic Recession or Not, You Must be Creative to Survive
 
Web Design and Development: The Right Tools for the Right Job
 
How To Get Free Publicity For Your Business
 
A Dirty Secret Marketers Don't Want You To Know
 
Cost-Effective PC Maintenance with the PC Power Suite 2.0
 
No-Holds-Barred Conversations with Dan Lok - Part 2
 
Million Pixel Advertising - Will the New Internet Marketing System Last?
 
 
 
 

Affiliate Marketing Case Studies: How To Find Them

It is very difficult to find useful affiliate marketing case studies on the World Wide Web. They are ... - Christopher Kyalo
 

Starting a Internet Home Business and Finding Your Niche

If you are among the millions who want to start an internet home business, you may be having trouble ... - Ian Canaway
 

Free Software: How Not To Get More Than You Bargained For!

Free software can be a wonderful thing online. But watch out for the wolves in sheeps clothing. - William Riopelle
 
 

Great Plains Bill of Materials Setup & Customization for Process Manufacturing - Overview

Microsoft Great Plains has full-featured Manufacturing suite of modules: Capacity Requirements Plann ... - Andrew Karasev
 

An Internet Marketing Lesson I Learned From My 7 Year Old Grandson

A few weeks ago I was watching my 7 year old Grandson Joel as he was drawing a picture of a strawber ... - Frank Sousa
 

The Best Internet Advertising is Free Internet Advertising

Free internet advertising is one very important method for promoting your products and services to t ... - Nicky Pilkington
 

Your Timeline to Multiple Streams Success

Want to know what is the realistic expectation for starting an online Multiple Streams business from ... - Alicia Forest
 

QuickBooks Training: Tracking Vehicle Mileage for Accurate Write-Offs

Nobody wants any of their deductions disallowed for lack of evidence. If you don't want to use a mil ... - Jennifer Thieme
 
 
Index >> Privacy Policy >> ToS  
Copyright © 2008 www.darkgreycells.com All Rights Reserved.