| Software Information | |
|
|
Microsoft CRM Programming Secrets - Tips For Developers
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 Andrew Karasev is Chief Technology Officer in Alba Spectrum Technologies - USA nationwide Microsoft CRM, Microsoft Great Plains customization company, based in Chicago, Boston, San Francisco, San Diego, Los Angeles, Houston, Atlanta, New York, and Miami and having locations in multiple states and internationally (www.albaspectrum.com), he is Dexterity, SQL, VB/C#.Net, Crystal Reports and Microsoft CRM SDK developer.
MORE RESOURCES: - Directory - SEO - Hosting - Software Reviews - Software News - Flash Games - software shop - sony digital camera pink digital camera - cheap book - mp3 player ipod - dummies dummies books - sony walkman - beauty shop women shop - mp3 downloads |
RELATED ARTICLES
7 Things to Consider Before Buying Small Business Accounting Software The world of small business accounting software can be a minefield for any business owner. However choosing the right package is one of the most critical business decisions you will make. Great Plains Dynamics on Pervasive/Ctree support - overview for consultant All of us know that Microsoft bought former Great Plains Software and formed Microsoft (Great Plains) Business Solutions in the earlier 21st century. It was total success for GPS, we guess, but for Great Plains Dynamics / eEnterprise / Dynamics C/S+ clients it was the time of change. Exactly What Does FTP Stand for and What Can it do for Me? FTP stands for "file transfer protocol". FTP is basically a way of sending files over the Internet. 10 Ways to Learn a Software Following tips help you to learn a software in lesser time and in an efficient manner:1. After installing a software package, look for any README file in the installed folder. Microsoft Great Plains Installation - Overview for IT Director/Controller Microsoft Great Plains is main mid-market application from Microsoft Business Solutions. This is short article, written in question/answer/FAQ style to give IT Director/Controller balanced top level information on Microsoft Business Solutions Great Plains implementation. Inherent Dangers Of File Sharing Via The Internet. Cyberspace has opened up a new frontier with exciting possibilities of "File Sharing." We can explore any interest imaginable and research any topic of choice. Microsoft Great Plains - Licensing & Product Versions Current Microsoft Business Solutions Great Plains has more that 10 years of history. Former Great Plains Software had two lines of Great Plains: Dynamics & Dynamics C/S+, later on renamed into eEnterprise. IT Strategy for Midsize Business: Microsoft vs. Java, Great Plains & CRM Midsize business or non-profit organization should decide if one-vendor solution would be appropriate and the associated risk acceptable. In our opinion, balancing the risk of one-vendor-approach is not economically feasible and should be avoided. Story Development Software: Good or Evil? In the early days of the personal computer, we're talking the mid-'80s here, there was speculation that someday books would all be writen by computers. It sounded a little too science-fictiony for most writers. Crystal Reports For Microsoft RMS - Overview For Developer/Report Designer If you are software developer or database administrator - we would like to give you the clues on Crystal Report creation for Microsoft RMS Database: Microsoft SQL Server or MSDE - this means that you can deploy native SQL driver for connection or use ODBC for flexibility. Tables Structure - it is extremely self-explanatory: Customer, Transaction (invoices, returns, layaways and others), TransactionAmount, Cashier, Tender to give you examples Links - Usually master table has ID column and Transaction-related table links by [Entity]ID column: Transaction. Marketing Your WinRunner Team It won't matter how effective your WinRunner Team is if no-one outside your immediate organization knows about your accomplishments. For this reason, marketing your WinRunner Team is vital to your success. 10 Things You Could be Using Photoshop For, But Probably Arent Most people don't use Photoshop to its fullest capabilities. Here are just ten uses to which you could put this highly versatile software. Great Plains Accounting Migration to Microsoft Great Plains - Overview for IT Specialist This is a short article, written in question/answer/FAQ style to give IT Specialist/developer/programmer balanced top level information on Great Plains Accounting migration to Microsoft Business Solutions Great Plains. If you have Great Plains Accounting as main accounting and ERP system you need to know some technical details on the migration to Great Plains and what is going on behind the scenes. Start Developing Your Own Software Learning how to program software seems like a daunting task fit only for the geeks and nerds who lock themselves away in dark rooms staring at their monitors for days on end as they pour over thick manuals written largely in zeros and ones. Fortunately the reality is that it's not as complicated to make basic applications as people may think. Getting Patched with Windows Service Pack Are you one of those people that keeps track of recalls, just in case one of your most recent purchases gets recalled? Well, some of us do, but many of us don't.For those of us who don't keep up with recalls in general, it's just as easy to be unaware of the fact that Microsoft Windows offers us this wonderful service called a Service Pack, which is essentially a recall service for Microsoft Windows. Software: What Suits Me? Almost all new and major brand of PCs come with bundled software packages that can handle both business and personal needs.However, if you purchase a stripped down model, you might have to spend considerable time and money to add appropriate software packages you vitally need. Bill of Lading - Custom Reporting for Microsoft Great Plains - Overview for Consultant Bill of Lading is required report for Logistics and Freight Forwarding companies. If you are looking at Freight Forwarding software, targeted to automate transportation business - Bill of Lading with multiple custom forms should be present there. 15 Questions to Ask Your Software Vendor When making a decision to buy any piece of software there are a number of criteria typically evaluated. One of the most important elements in the decision process is the strength of the company that builds the software. Blind CC (Bcc): Master Its Use When E-Mailing If you use Microsoft Outlook (or similar applications) for e-mailing, then you are familiar with the fields at the top of a new mail message, right? Of course, in the "To.. Popular Fleet Maintenance Programs Some companies that are in need of fleet management may choose to utilize the services of a fleet maintenance program. These programs can generally handle all of you fleet management needs. |
| Home | Site Map | globalwarming awareness2007 |