![]() |
Audio Streaming Information | |
|
Powered by SaNiTaRaC.CoM - DERATIZACIJA DEZINSEKCIJA DEZINFEKCIJA
|
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: 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 can't. 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 About The Author 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
MORE RESOURCES: » » » » |
RELATED ARTICLES
Cisco Certification: Five Things To Do DURING Your CCNA Exam There are plenty of articles out there about how to prepare for the CCNA exam. However, there are also things you can do to increase your chances of success on exam day during the most important part of the entire process -- the time that you're actually taking the test. Recovering Microsoft Great Plains Customization - Tips for IT Director Remember nice and prosperous Clinton era? When you implemented innovative those old days accounting application - Great Plains Dynamics. And did a lot of customizations to fit your business requirements precisely. Microsoft Great Plains Remote Support - Overview Microsoft Great Plains is now standard mid-market ERP application, serving the whole spectrum of businesses. In the case of mid-size business we usually see strong IT team with SQL querying skills plus accounting department is already trained to use Great Plains and needs minimal help in figuring out on how to use new Great Plains version and features. Your Computer May Be Infected, Heres How To Check (NOT about virus) NOTE: Please take time to read on - it may be vital for your PC's security. If you are not in the mood, just save it or print it out for later reference. Putting Screensavers Under Control No matter how much you enjoy your favorite screensavers, sometimes they can be rather annoying. Don't like them interrupting your presentations? Hate them disturbing you watching movies? Look no further. 5 Time-Saving Tips in Microsoft Word Whether you have used Microsoft Word for years, have just switched from WordPerfect or are new to word processing, try these easy steps to save time and simplify your work in Word:Turn off Personalized Menus and ToolbarsAlthough it is a default, Personalized Menus and Toolbars is a terrible "feature" which limits your initial view to select toolbar buttons and menu commands. Do you only have one row of toolbars at the top of the screen? When you click on a menu, does it expand only after a few seconds? If so, you will save yourself a lot of frustration by turning off this personalized display:1. Microsoft Great Plains Reporting - Overview for Developer Looks like Microsoft Great Plains 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. Microsoft Great Plains Integrations - Tips for Developer In this short FAQ style article we would like to introduce you - software developer, programmer, database administrator into Microsoft Great Plains Integration tools and optionsMicrosoft Great Plains is main Microsoft Business Solutions product for US mid-market. Historically Great Plains Software designed Great Plains Dynamics and Dynamics C/S+ as multiplatform application and the integration was possible via Great Plains Dexterity or Dexterity-based end user tools, such as Import Utility and later on via Integration Manager. Groupware: Avoid the Ad Hoc Shuffle GroupwareEfforts are continually made to manage the unavoidable ad hoc business process, but ad hoc processes do not necessarily mean a pile of messy, shuffled documents, at least not anymore. Groupware is software which tracks and manages the ad hoc business collaboration. Examining the Substance of Studio MX To all web designers out there, this article is for you! I guess you already heard about Studio MX (I think so!) - the ideal bundle for professional web designers, bringing together Dreamweaver MX for page design, Flash MX for animation and interactivity, and Fireworks MX for editing and optimizing graphics. With all these components, it certainly provides professional functionality for every aspect of web development. Photoshop Files and Formats People often ask me: What image file formats will Photoshop open or save in? What are the advantages/disadvantages?Photoshop has the capability to open and save many different graphic files. Here are some of the most popular ones. Increase Office Efficiency With One Simple Tool When you need a phone number, you do a quick search on the Internet and in a few seconds, you've got the information you need. And you probably receive a lot of contact information right inside the emails you receive every day. 40/sec to 500/sec IntroductionSurprised, by the title? well, this is a tour of how we cracked the scalability jinx from handling a meagre 40 records per second to 500 records per second. Beware, most of the problems we faced were straight forward, so experienced people might find this superfluous. Ukraine: a Prospective Player on the World Software Outsourcing Market The destruction of the Soviet Union about 15 years ago, made a huge country with a great level of IT science divided into small bricks. Nowadays, despite Russia's expansion into the world software development market, Ukraine keeps playing an important role here too. Introducing GRML Creating a new markup language.Introduction. Microsoft CRM Data Conversion FAQ Microsoft Business Solutions CRM data conversion deserves FAQ type of article, where IT people could get initial directions. Even if it seems as a trivial task, we would suggest you to think about these possible scenarios: objects mapping between your legacy CRM: GoldMine, ACT, Siebel, Lotus Notes Domino. IBM Lotus Domino or Microsoft Exchange? IBM Lotus Domino or Microsoft Exchange?The severe competition continues for many years between two main leaders in collaboration solutions - IBM and Microsoft. Whether the choice of a platform influences the ordinary user? The both of software giants put efforts to improve working conveniences for end Internet users. Database Guru James F. Koopmann Reviews DBxtra Reporting and Query Tool DBxtra is a powerful query and reporting tool that hides many of the complexity and technical expertise required for creating connections to disperse data sources, building queries, designing reports, and delivery information throughout an enterprise or to your customer base.With the ability to connect to multiple databases or data sources at the same time, DBxtra allows for cross platform data aggregation and the ability to answer questions that would typically take IT time to migrate data into a single reporting database. Navision Customization: C/SIDE, C/ODBC, C/FRONT, XBRL - Development Options Microsoft bought Navision, Denmark based software development company, along with Great Plains Software. Now Microsoft Business Solutions offers following ERP applications: Navision (former Navision Attain), Microsoft Great Plains (former Great Plains Dynamics/eEnterprise), Solomon, Axapta. Microsoft Great Plains Customization Tools - Overview Former Great Plains Software Dynamics/eEnterprise, and currently Microsoft Business Solutions Great Plains was initially designed in the earlier 1990th as the extendable and modular application with its proprietary tool: Great Plains Dexterity, written in C programming language as a shell. This was popular tendency those days -compare with SAP ABAP or Navision C/Side. |