Microsoft CRM Customization- Software Closed Email Activity
페이지 정보
작성자 Nichole 작성일24-08-06 00:54 조회10회 댓글0건본문
Microsoft's CRM is a Salesforce replacement and an attempt to capture market share from Siebel, Oracle, and other standard Client Relationship Management System vendors. 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 design, C#, VB. Online, HTML, XML Web Service, XLTP, Script to name a few.
Exercise of email type programming is the topic of yesterday's discussion; you typically deal with these customizations when you improve Microsoft Exchange CRM connector. This is the main conversation topic, and how do you create closed activities? We'll apply C#. Online scripting
One of our Exchange Event Handler/Sink's jobs involves creating MS CRM Closed Activity, which handles bothincoming and outgoing internet 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 make activity for: customization 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 Action development:
emailId = crmConnector. CreateEmailActivity (
crmUser.GetId(),
Microsoft. Crm. Program. Forms. ObjectType. otAccount, crmAccount. GetId( ),
Microsoft. Crm. Program. 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. System. Surrogate. BizUser bizUser = fresh Microsoft. Crm. Program. Surrogate. 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. Program. Vpn. CRMEmail email = fresh Microsoft. Crm. Software. Surrogate. CRMEmail( );
message. Qualifications = qualifications;
contact. Url = crmDir + "CRMEmail. fs";
// Laid up the XML series for the task
strActivityXml ="";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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. System. Forms. ObjectType. otSystemUser )
strPartiesXml + ="" + Microsoft. Crm. System. Forms. ObjectType. otSystemUser. ToString( ) +"";
}
else if ( toObjectType = = Microsoft. Crm. System. Forms. ObjectType. otAccount )
strPartiesXml + ="" + Microsoft. Crm. Program. Forms. ObjectType. otAccount. ToString( ) +"";
}
else if ( toObjectType = = Microsoft. Crm. System. Forms. ObjectType. otContact )
strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otContact. ToString( ) +"";
}
else if ( toObjectType = = Microsoft. Crm. System. Forms. ObjectType. otLead )
strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otLead. ToString( ) +"";
}
strPartiesXml + ="" + toObjectId. ToString (" B" ) +"";
strPartiesXml + ="";
strPartiesXml + = Microsoft. Crm. System. 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. System. Forms. ObjectType. otSystemUser. ToString( ) +"";
}
else if ( fromObjectType = = Microsoft. Crm. System. Forms. ObjectType. otAccount )
strPartiesXml + ="" + Microsoft. Crm. Program. Forms. ObjectType. otAccount. ToString( ) +"";
}
else if ( fromObjectType = = Microsoft. Crm. System. Forms. ObjectType. otContact )
strPartiesXml + ="" + Microsoft. Crm. Software. Forms. ObjectType. otContact. ToString( ) +"";
}
else if ( fromObjectType = = Microsoft. Crm. Software. Forms. ObjectType. otLead )
strPartiesXml + ="" + Microsoft. Crm. Software. 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 image
Guid emailId = fresh Guid(email. Create(userAuth, strActivityXml, strPartiesXml ) );
gain emailId;
}
find ( System. Web. Services. Techniques. Exception e )
logs. Debug( "ErrorMessage:" + electronic. Communication +"" + e. Detail. OuterXml+" Supply:" + e. Supply );
}
catch ( Excuse e )
logs. Debug(e. Information+" \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 correctly:
public void UpdateActivityCodes( Guid emailId )
try
OleDbCommand order = con. CreateCommand( );
demand. CommandText = "UPDATE ActivityBase SET DirectionCode = ( )" ), StateCode = (? ), PriorityCode = (? ) WHERE ActivityId = (? )";
command.Prepare();
order. Guidelines. Add( new OleDbParameter (" DirectionCode", Microsoft. Crm. Program. Forms. EVENT_DIRECTION. ED_INCOMING) );
control. Criteria. Add( new OleDbParameter (" StateCode", Microsoft. Crm. System. Forms. ACTIVITY_STATE. ACTS_CLOSED) );
order. Criteria. Add( new OleDbParameter (" PriorityCode", Microsoft. Crm. System. Forms. PRIORITY_CODE. PC_MEDIUM) );
demand. Criteria. Add( new OleDbParameter ("ActivityId", emailId ) );
register. Debug(" Prepare to update action code" + emailId. ToString (" B" )+" in ActivityBase" );
command.ExecuteNonQuery();
}
catch( Exception e )
logs. Debug(e. Information+" \r
" + electronic. StackTrace );
}
}
public void UpdateActivity QueueCodes( Guid emailId, Guid queueId )
try
OleDbCommand order = con. CreateCommand( );
order. SET Priority = ( )" SET CommandText = "UPDATE QueueItemBase SET Priority = ( )" ), State = (? ), QueueId = (? ) WHERE ObjectId = (? )";
command.Prepare();
demand. Guidelines. Add( new OleDbParameter (" Priority", Microsoft. Crm. Software. Forms. PRIORITY_CODE. PC_MEDIUM) );
control. Criteria. Add( new OleDbParameter (" State", Microsoft. Crm. System. Forms. ACTIVITY_STATE. ACTS_CLOSED) );
control. Criteria. Add( new OleDbParameter (" QueueId", queueId ) );
control. Criteria. Add( new OleDbParameter ( "ObjectId", emailId ) );
logs. Debug(" Prepare to update task queue password" + emailId. ToString (" B" )+" in QueueItemBase" );
command.ExecuteNonQuery();
}
catch( Exception e )
logs. Debug(e. Information+" \r
" + electronic. StackTrace );
}
}
Happy customizing, implementing and modifying! If you want us to do the task- give us a call 1-866-528-0577! support @albaspectrum. web
댓글목록
등록된 댓글이 없습니다.