0 votes
by (200 points)

Microsoft's CRM is a traditional client relation management system vendor, competing with Siebel, Oracle, and people. Microsoft CRM uses all the range of Microsoft new solutions:. Online, MS Exchange, MS Outlook, MS SQL Server, Replication, Indexing, Active Directory, Windows 2000/2003 safety type, C#, VB. Online, multi theme interface HTML, XML Web Service, XLTP, Browser to name a few.

Activity of email type programming is the topic of yesterday's discussion because Microsoft Exchange CRM connection improvements typically address these modifications. How do you create a finished discussion? This is the main discussion point. We'll apply C#. Online coding

One of our Exchange Event Handler/Sink's jobs involves creating MS CRM Closed Activity, which handles bothincoming and outgoing email communications. Using the MS CRM SDK ( handling inbound and outbound XML messages ) and direct access to the MS CRM Database, the interaction with Microsoft CRM takes two forms. This first look at the Shut Action design engine:

1. First we need to know the object we need to create activity for: Account, Lead or Contact. The choice may use a particular set of criteria, such as email address, in our event:

if ( ( crmAccount = crmConnector. GetAccount( mailbox From ) )! = null )

}

else if ( ( crmContact = crmConnector. GetContact( mailbox From ) )! = null )

}

else if ( ( crmLead = crmConnector. GetLead( mailbox From ) )! = null )

}

2. Then we have to find GUID of MS CRM users, who owns this object, C# script like this:

crmUser = crmConnector. GetUser( crmAccount. GetOwnerId( ) );

3. Next stage is closed Activity development:

emailId = crmConnector. CreateEmailActivity (

crmUser.GetId(),

Microsoft. Crm. Software. Forms. ObjectType. otAccount, crmAccount. GetId( ),

Microsoft. Crm. System. Forms. ObjectType. otSystemUser, crmUser. GetId( ),

crmAccount. GetEmailAddress( ), crmUser. GetEmailAddress( ), sSubject, sBody );

4. The process to create closed action:

public Guid CreateEmailActivity( Guid userId, int fromObjectType, Guid fromObjectId, int toObjectType, Guid toObjectId, string mail From, string mailTo, string subject, string body )

try

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

// BizUser proxy image

Microsoft. Crm. Software. Surrogate. BizUser bizUser = fresh Microsoft. Crm. Program. Vpn. BizUser( );

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

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

bizUser. Qualifications = qualifications;

Microsoft. Crm. Software. Surrogate. CUserAuth userAuth = bizUser. WhoAmI( );

// CRMEmail proxy image

Microsoft. Crm. Software. Vpn. CRMEmail internet = fresh Microsoft. Crm. System. Surrogate. CRMEmail( );

contact. Certificates = qualifications;

message. Url = crmDir + "CRMEmail. converter";

// Laid up the XML series for the task

strActivityXml ="" in series;

strActivityXml + ="";

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

strActivityXml + ="";

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

strActivityXml + ="";

// Laid up the XML series for the task parties

strPartiesXml ="";

strPartiesXml + ="";

strPartiesXml + ="" + mailTo +"";

if ( toObjectType = = Microsoft. Crm. Program. Forms. ObjectType. otSystemUser )

strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otSystemUser. ToString( ) +"";

}

else if ( toObjectType = = Microsoft. Crm. Software. Forms. ObjectType. otAccount )

strPartiesXml + ="" + Microsoft. Crm. System. Forms. ObjectType. otAccount. ToString( ) +"";

}

else if ( toObjectType = = Microsoft. Crm. Program. Forms. ObjectType. otContact )

strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otContact. ToString( ) +"";

}

else if ( toObjectType = = Microsoft. Crm. Program. Forms. ObjectType. otLead )

strPartiesXml + ="" + Microsoft. Crm. Program. Forms. ObjectType. otLead. ToString( ) +"";

}

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

strPartiesXml + ="";

strPartiesXml + = Microsoft. Crm. Program. Forms. ACTIVITY_PARTY_TYPE. ACTIVITY_PARTY_TO_RECIPIENT. ToString( );

strPartiesXml + ="";

strPartiesXml + ="";

strPartiesXml + ="";

strPartiesXml + ="" + mailFrom +"";

if ( fromObjectType = = Microsoft. Crm. System. Forms. ObjectType. otSystemUser )

strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otSystemUser. ToString( ) +"";

}

else if ( fromObjectType = = Microsoft. Crm. Program. Forms. ObjectType. otAccount )

strPartiesXml + ="" + Microsoft. Crm. System. Forms. ObjectType. otAccount. ToString( ) +"";

}

else if ( fromObjectType = = Microsoft. Crm. Software. Forms. ObjectType. otContact )

strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otContact. ToString( ) +"";

}

else if ( fromObjectType = = Microsoft. Crm. Software. Forms. ObjectType. otLead )

strPartiesXml + ="" + Microsoft. Crm. Program. Forms. ObjectType. otLead. ToString( ) +"";

}

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

strPartiesXml + ="";

strPartiesXml + = Microsoft. Crm. System. Forms. ACTIVITY_PARTY_TYPE. ACTIVITY_PARTY_SENDER. ToString( );

strPartiesXml + ="";

strPartiesXml + ="";

strPartiesXml + ="";

log.Debug(strPartiesXml);

// Create the e-mail thing

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

transfer emailId;

}

find ( System. Web. Services. Techniques. Exception electronic )

logs. Debug( "ErrorMessage:" + electronic. Communication +"" + e. Detail. OuterXml+" Resource:" + e. Cause );

}

catch ( Exception e )

register. Debug(e. Concept+" \r

" + electronic. StackTrace );

}

return new Guid( );

}

5. You must set up the activity's flags in accordance with MS CRM standards to make it display the action you merely created properly:

public void UpdateActivityCodes( Guid emailId )

try

OleDbCommand control = conn. CreateCommand( );

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

command.Prepare();

control. Criteria. Add( new OleDbParameter (" DirectionCode", Microsoft. Crm. Program. Forms. EVENT_DIRECTION. ED_INCOMING) );

demand. Criteria. Add( new OleDbParameter (" StateCode", Microsoft. Crm. Program. Forms. ACTIVITY_STATE. ACTS_CLOSED) );

demand. Criteria. Add( new OleDbParameter (" PriorityCode", Microsoft. Crm. Program. Forms. PRIORITY_CODE. PC_MEDIUM) );

control. Guidelines. Add( new OleDbParameter ("ActivityId", emailId ) );

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

command.ExecuteNonQuery();

}

catch( Exception e )

register. Debug(e. Concept+" \r

" + electronic. StackTrace );

}

}

public void UpdateActivity QueueCodes( Guid emailId, Guid queueId )

try

OleDbCommand control = conn. CreateCommand( );

order. SET Priority = ( )" SET CommandText = "UPDATE QueueItemBase SET Priority = ( )" ), State = (? ), QueueId = (? ) WHERE ObjectId = (? )";

command.Prepare();

order. Guidelines.

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Welcome to QNA BUDDY, where you can ask questions and receive answers from other members of the community.
...