tag:blogger.com,1999:blog-244425892024-03-07T16:05:04.583-08:00Dynamic Methods Microsoft CRM BlogDynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.comBlogger140125tag:blogger.com,1999:blog-24442589.post-71063981566899126142011-02-22T15:39:00.001-08:002011-02-22T15:45:16.955-08:00CRM 2011 On Premise ReleasedJust in case you haven't heard from all of the Microsoft and other Partner hype, CRM 2011 has now been released for install on your own premise (not just the online version).<br /><br />Here is the link to <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C3F82C6F-C123-4E80-B9B2-EE422A16B91D">download the bits</a>.<br /><br />Other useful links:<br /><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9886AB96-3571-420F-83AD-246899482FB4">Implementation Guide</a><br /><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=420F0F05-C226-4194-B7E1-F23CEAA83B69">SDK</a><br /><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=22DC423A-7194-491E-A169-6ACE16BFDD36">Outlook Client</a><br /><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=A995F6AD-0099-42FD-9B22-CF7B3D40A2BF">Email Router</a><br /><br /><br />Enjoy the new version of CRM!<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-59301959345900382272010-09-14T09:39:00.000-07:002010-09-14T09:42:18.016-07:00Microsoft Dynamics CRM 2011 Beta is releasedThe beta for the next version of Microsoft CRM has been released.<br /><br />Check out information on it <a href="http://offers.crmchoice.com/CRM2011Beta-Landing/">here</a>.<br /><br />To download bits, click <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0c7dcc45-9d41-4e2e-8126-895517b4274c&displayLang=en">here</a>.<br /><br />There is some great stuff to see. Quite a few UI changes and a lot of enhancements added to the Outlook client.<br /><br />Good stuff coming our way in the future.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-48923408216240216282010-06-30T21:47:00.000-07:002010-06-30T22:03:33.917-07:00Scribe 7.0 Released!Scribe 7.0 has release today, check out the details <a href="http://blog.scribesoft.com/2010/06/insight-70-is-available-for-download.html">here from Scribe's blog/website</a>. Some of the highlights for the data migration/integration application are:<br /><br />1. Multi-Target solutions. Integrations/Imports can now have steps that point to different targets. If your ERP system needs to pass along inventory data to all of your other systems, you can now do it in one integration file, rather than one file for each system to push to.<br />2. Take advantage of outside webservices during the integration to improve data integrity and business rules.<br />3. DBLookups no longer limited to Source, Target, or Internal. They can now be run against outside systems to check, validate, etc against that system's date for the integration.<br /><br /><a href="http://storage.pardot.com/954/85645/ScribeInsight7_0ReleaseOverview.pdf">Here's a link to Scribe's whitepaper of listed enhancements for their 7.0 product</a>.<br /><br /><a href="http://community.scribesoft.com/downloads">Download here</a>.<br /><br />Good stuff from Scribe, check it out.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-8475885507101328392010-05-05T18:02:00.001-07:002010-05-05T18:03:28.237-07:00Managing the MSCRM Asynchronous Service<p>Workflows are a wonderful thing.  They make it so that power users, non-developers, can get a lot done with Microsoft CRM without having to know a lick of code and can get a lot of business processes built into their company’s application relatively easy.</p> <p>I have, however, seen some administrators and power users get a little liberal in how they use and implement their workflows without thinking about the repercussions to their system as a whole.  I’ve seen servers where the Asynchronous Service (CRMAsyncService.exe)was using on average 90-95% of the CPU constantly.  </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz_5kofLorjWtp79wvLVMSB8PfBteoJ_Ij5PxGlpMbQdGiIjmI8y23uBe2HiQD_o8lU1b6p9v7ckhWk6BOwluydQnbFD3gaMO4erFtPlP4LyTS2e9plt60FF7p2RM5Q5f53l9/s1600-h/1%5B4%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="1" border="0" alt="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJMhNxfRr15u4tGey9i6O6UtEsaUX2Kf8N2tBNgahanbO59khCfMwF8dQQGQnd-XR7I9MgaHQw93a-DZKrqZz8vfX8fYe-dev9FfxCKLlI02XjwHomiZM0g6CIArpqwPBfWUOE/?imgmax=800" width="386" height="440" /></a></p> <p>Any guess as to the cause?  Workflows.  But not just any workflows, workflows with WAIT’s in them.  Workflows that fire from their given trigger, run their course and then complete are great and just fine.  They don’t take up much memory or CPU usage because they run for such a short time.  It’s the WAIT states that eat up all your memory and CPU usage on your server.</p> <p>WAIT states have their place and sometimes cannot be avoided.  But a system administrator should look to have as few WAIT’s as possible in his/her system.</p> <p>Here are some good alternatives for WAIT’s:</p> <p>1. Use the UPDATE trigger on another workflow to check for a given attribute and condition and fire the WAIT logic when that criteria is met.</p> <p>2. Don’t wait to create activities, create them immediately and just set the dates on the activity accordingly.  If you are waiting X number of days to send an email as a follow up, you could just create the email and have it sit in a users “To Do” list and when that user looks at his/her list for the day, would see that the email needs to be sent out.  Otherwise, you could even create the emails and write a nightly process (or use a third party tool) to check the system for emails that haven’t been sent and have the tool send them after hours.</p> <p>3. Change to batch processes.  Using a custom tool or third party product, have the tool check the system at intervals to escalate incidents (cases), send emails, remind users about opportunities or past due activities, etc.  Sure it’s a little extra work but if you have a lot of things that need to be waited on, then it’ll be worth the effort.</p> <p>Protect yourself, your server and your company from WAIT’s in workflows by just avoiding them.  Keep your eye on that Asynchronous Process!</p> <p>David Fronk <br />Dynamic Methods Inc.</p>Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-73169880827869222762010-03-26T10:40:00.000-07:002010-03-26T10:51:14.837-07:00Populate CRM Fields from Parent WindowThere are a number of people who have posted about copying a record via JScript button in CRM, and this post isn't far off from that concept. My coworker found a great way to implement the concept of opening a record and populating fields on the newly opened window, based on data from the originating window. And that is quickly opening an activity.<br /><br />This customization cuts down the number of clicks to open a new Activity from 4, down to 1. 4 being click on the record you wish to create an activity for, click "Activities", click "New", click the activity type, click Ok. You can double click on the activity type to open it, but that's still 4 clicks technically. With this customization, users just click the button of the activity type. Done.<br /><br />In a piece of software where users already feel like there are a lot of clicks and windows, this helps significantly.<br /><br />Ok, now the good part. How do we do it?<br /><br />Add a button to the entity you want to apply this customization to within the ISV.config file (in this example I use the contact):<br /><br /><Entity name="contact" ><br /> <ToolBar ValidForCreate="0" ValidForUpdate="1"><br /> <Button Icon="/_imgs/ico_16_142.gif" <br />JavaScript="window.open('http://crmserver/CompanyName/activities/appointment/edit.aspx?');" PassParams="1" <br />WinParams="" WinMode="0"><br /> <Titles><br /> <Title LCID="1033" Text="New Activity" /><br /> </Titles><br /> <ToolTips><br /> <ToolTip LCID="1033" Text="Create new appointment activity" /><br /> </ToolTips><br /> </Button><br /> </ToolBar><br /> </Entity><br /><br />Now, on the OnLoad script of the given activity (in this case the Appointment), add the following code:<br /><br />//appointment onload script<br />if (window.opener.crmForm) {<br /> var rgid = window.opener.crmForm.ObjectId;<br /> var rgtype = window.opener.crmForm.ObjectTypeCode;<br />}<br />if (rgtype == 1) {<br /> var rgname = window.opener.crmForm.all.name.DataValue;<br />}<br />if (rgtype == 2) {<br /> var rgname = window.opener.crmForm.all.fullname.DataValue;<br />}<br /><br />if (rgid != null) {<br /> var oItems = new Array();<br /> oItems[0] = new LookupControlItem(rgid, rgtype, rgname);<br /><br /> crmForm.all.regardingobjectid.DataValue = oItems;<br />}<br /><br /><br />Done. Not too difficult and end users will love it.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com1tag:blogger.com,1999:blog-24442589.post-58598202347901740952010-03-05T16:15:00.000-08:002010-03-05T18:35:58.113-08:00Integrations: In-line versus Queue/Batch BasedI love web services. They make it so that one system can send and receive data from some completely different system from anywhere over the web. Data gets updated, end users can see the latest and greatest data essentially instantaneously. With CRM plugins you can have in-line integrations that just push data from CRM to whatever system you want on a save, reassignment, deletion, etc. Or, you could pull data from another system whenever a page loaded, all through plugins. That's awesome.<br /><br />Queue, or batch, integrations take note of everything that changes and then runs a process at a given time interval and pushes all of the data that has been queued up into the other system. Web services can be used to push/pull data in this data from the queue in batch fashion and keep systems in sync. But typically when these batches are run they put a load on the server and could be rather resource intensive. And data isn't updated instaneously, it gets updated shortly after the predetermined time interval. If this is nightly that might be too stale for some people. Depending on the data though, that may be more than sufficient.<br /><br />However, when those web services don't work (when either server goes down, gets overloaded, etc) it's REALLY bad. Things either get out of sync, or else your integration just got a whole new level of complexity; waiting, or holding the data, until the other system comes back online. In the debate of in-line versus queue based integrations, queue based gets a point here. If the server is down, the queue based system gracefully errors, noting that the remote server is down, and the next time it runs it picks up where it left off and tries again. In-line dies and doesn't get the data transimitted across. The best it can do is error and put its data into a record to get queued up and processed at a later time...via a queue based integration.<br /><br />I have recently worked with a system that went down at least twice a day. Originally it was thought that an in-line integration would work just fine. But since the receiving server has been down I now have to include or move to a queue based integration in case the in-line goes down. <br /><br />Each has their use, and I want the in-line to work because in my mind it's the best. But in reality, the queue based, though "slower", is the most reliable. <br /><br />If any one has any thoughts or input, we'd love to hear it.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com1tag:blogger.com,1999:blog-24442589.post-22867786093071941642010-02-12T07:50:00.000-08:002010-02-12T09:02:24.632-08:00Pictures inside CRM EmailsOne of my biggest issues with CRM emails, versus an Outlook email, is how difficult it can be to tailor up your emails that you want to send out. Getting a good looking email sent out of CRM is about as complex as writing a static web page. And since CRM emails are rendered in HTML, that's actually exactly what it takes to get a good looking email out.<br /><br />Now, not everyone wants to send out an amazing document all the time, sometimes a picture or logo at the end of the email would suffice. Theoretically this would be simple, only CRM doesn't let you copy and paste images from your local machine into an email.<br /><br />But there is a solution, it doesn't require too much effort, but it does require whatever image you want to be sent in your email to be public available to anyone. Just like a webpage cannot show an image from your local machine (unless it's hosted there) a CRM email cannot show an image that you copy from your local machine into the body of the email. <br /><br />Here's how to work around this. You need to use pictures/logos that are publicly available. For instance, if you want to put your company logo in an email, go to your company web page, right click on the company logo and choose to copy the image. Then go to your CRM email and paste it in. The image will appear and when you send it out the image will carry through. The reason it will go through is because the reference you copy and paste points to a URL that all computers can reference and see.<br /><br />If you can have a public folder that you store you images in and that can be accessed via a URL path from anywhere, then you are all set to put whatever images you want into your CRM emails. All this would take would be to add a folder to where your company website resides (maybe call it "CRMPictures") then you can manually browse to that location and copy and paste whatever pictures you want.<br /><br />A little cludge of a work around but it works and it could give you a centralized place to place pictures/images to be used for your CRM Marketing needs.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-50250279596385484712010-01-22T16:01:00.000-08:002010-01-22T16:18:53.300-08:00Teams in CRMI've been asked a handful of times what Teams are in CRM and when it would be appropriate to use them. I couldn't find all that much documentation around when a Team should be used, just how to set up and reference Teams. So, this is my take on the usefulness of Teams.<br /><br />According to the CRM Help files, teams are "a group of users who share and collaborate on business records. A team can consist of members who all report to one business unit or members who report to different business units". <br /><br />In essence teams are an easy way to share records. And sharing within CRM are ways to make exceptions to security roles. Security roles limit what users can and cannot do within or outside of their business unit. However, sharing creates exceptions by allowing specific privileges to specific records.<br /><br />As an example, two sales reps cannot see each other's contacts within CRM. But for a joint deal that they are working on one rep may need to see some of the other rep's contacts in order help get the deal closed. The necessary records are then shared and the deal can advance more efficiently as both reps can now use the necessary data to get their jobs done.<br /><br />Teams are groups of users that can have records shared with them, to facilitate sharing records in mass with groups of people. That is the primary role of Teams within CRM. Please note that Teams cannot be deleted in CRM (why I don't know, that's just what they chose to do when they programed the system) and in order to "deactivate" them you need only to remove all of the members from the Team.<br /><br />Teams may also be used when setting up "Resources" for a given "Service", within the Scheduling Calendar. There may be a repair team that makes up people qualified to repair bikes. By adding users to that Team, the Users are seen as available Resources through the Team to perform a given Service. Depending on availability and other Resources, the Scheduling Calendar can then find available times for repairs to be made by certain individuals. A very powerful tool, but also a lot of set up and a lot of linking that has to be understood to make it all work.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-73687531980735088362009-11-23T05:06:00.000-08:002009-11-23T05:17:11.630-08:00Alternative Option to Disabled FieldDisabling fields has been a great way to lock down information within MSCRM. The one issue that I run into with it is that users comment that a disabled field is so "washed out" that it becomes difficult to read.<br /><br />Another option to use instead of the out of the box disabled, is to make the field read only. It's a very simple script:<br /><br />crmForm.all.fieldname.readOnly = true;<br /><br />It leaves the field looking like other fields so that it's not washed out but it cannot be edited from the form. This customization is technically unsupported, but it has been around since the MSCRM 3.0 days and so far Microsoft hasn't locked this script down. We'll find out next version whether or not the script gets carried over or not. But worst case scenario for your scripts would be that they need to be modified to use the disabled option rather than the read only option.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methods Inc.http://www.blogger.com/profile/02258185108004160490noreply@blogger.com1tag:blogger.com,1999:blog-24442589.post-48582932864274886532009-11-13T11:24:00.000-08:002009-11-13T13:28:31.030-08:00Easy Emailing from a CRM Contact RecordHas anyone else wanted to be able to click on the email address on a form in CRM and have it email that person/record? Or at least bring up an email message form that can be filled out and sent?<br /><br /><br /><br />Yes, on the Contact form there is the "Send Email" button, but that sends a CRM email and personally, I'm not a huge fan. They're great for templates but other than that I very much prefer the Outlook experience of emailing.<br /><br /><br /><br />So, the other day I came up with a good way to get the functionality that I really wanted. I used some script from one of my coworkers that turns the label of a field to a button and then modified the onclick action. Here's what the buttons look like:<br /><br /><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 251px; DISPLAY: block; HEIGHT: 58px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5403672800901114866" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRG-yd0s_XbQyeTxs02bcAF506dHCDlw5sZHmJtKhR7XliwHysTsWtqV9NjVhXqYEaCzC6MdpHbNDcAA8XQcrxvHGpXEC_ZP1J7OxUYaqelDT-EeTXwRe04_4p71UW9lD8cVLa/s400/1.PNG" /><br />And when anyone clicks on the buttons it will take the corresponding email address and use your default mail client (most likely Outlook) and open up an email message for you:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmB75LYK9-pmsOXNRZTj47nVo_439coG4sheQND57g1qkSFUgVdTnVZAo88JWv-F2tUwxIPGaM265vDPjG82YZryHPeJTitWp0HjL4pM4kZerEVMF5wjrV_LIDPBzYgN3lxtZ/s1600-h/2.PNG"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 384px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5403672805454560882" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmB75LYK9-pmsOXNRZTj47nVo_439coG4sheQND57g1qkSFUgVdTnVZAo88JWv-F2tUwxIPGaM265vDPjG82YZryHPeJTitWp0HjL4pM4kZerEVMF5wjrV_LIDPBzYgN3lxtZ/s400/2.PNG" /></a><br /><div>This is all done with script and with only a little fiddling the form is now so much more functional now. And for all you coders out there, here's the part you want, the code:</div><div></div><div><br />/********Email Button Creation********/<br />// Replace the attribute new_button with the button and create a link to the onclick function<br /><br />function CreateEmailButton() {<br />var fieldTable = crmForm.all.emailaddress1_c;<br />var html = "<input onclick='Email_Button_OnClick()' value='Primary' type='button'>";<br />fieldTable.innerHTML = html;<br />}<br />// Function to be triggered onClick<br />Email_Button_OnClick = function()<br />{<br />window.location = "mailto:" + crmForm.all.emailaddress1.DataValue;<br />}<br />CreateEmailButton();<br /><br /><br />It's the little things in life that make us happy, so why not make your CRM users happy by adding some simple solutions to make their jobs easier? I don't necessarily mean this solution, but anything that makes it so that people don't have to do the same function 50 times a day sure brings a big smile to their face :).</div><div></div><div>David Fronk</div><div>Dynamic Methods Inc.</div>Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com2tag:blogger.com,1999:blog-24442589.post-86408054179008143312009-11-06T22:40:00.000-08:002009-11-07T03:15:14.442-08:00Why should I care whether my data is in a database or not?This may sound like an obvious question but amazingly enough there are a lot of people who don't always quite get this. When asked how people manage their data and they tell me that they look up their lists in Word, I cringe. Or when people use Excel for all of the note taking needs and then ask for it to me imported into CRM I question the usefulness of such an exercise. Word is great for writing documents and letters. Excel is a mini database and monster of a calculation and reporting tool. CRM, from a data perspective, is a relational database that can track just about anything and relate one set of data to another set. <br /><br />While I've only seen a handful of people using Word to track data, Excel is used all of the time. And amazingly enough people use Excel like Word. Putting an address of street1 street2 city state zip all in one cell isn't the best use of a cell. Breaking that out into separate data fields, or their own Excel cells makes it so that you sort, query, and group data together. That's the power of relational databases like CRM. With data being broken out and related properly data is able to be queried, grouped, sorted, quantified, calculated, and more properly analyzed. There aren't many limits on what you can do as long as your data is entered and records linked correctly between tables.<br /><br />There is a huge difference between a CRM system with bad data and a CRM system with good data. One can actually effectively help users to target the proper places to focus their time and the other just misleads and frustrates people.<br /><br />How do you store your data? Are you tracking everything that is of use to you?<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-76614986914037514992009-10-27T16:10:00.001-07:002009-10-27T16:12:27.664-07:00Rollup 7If you haven't seen it from the numerous other blogs that have already posted this, <a href="http://support.microsoft.com/kb/971782">here's the link to where you can download the rollup</a>. It is cumulative, so be aware of that.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-70495115140482565012009-10-20T09:00:00.000-07:002009-10-20T09:10:40.804-07:00Windows 7 available to all October 22If you haven't seen all the media that Microsoft is putting out around Windows 7, I'm telling you about it now. I've been using Windows 7 for a little while now and it is great, head and shoulders better than Vista. If you are on a Vista machine, I completely recommend upgrading to Windows 7 ASAP. If you're on XP, I still recommend upgrading, just make sure you have enough time because it esssentially will be like doing a full reinstall.<br /><br />Check out Windows 7 <a href="http://www.microsoft.com/windows/windows-7/">here</a>. And if you want to see some of the features, <a href="http://www.microsoft.com/windows/windows-7/features/videos.aspx">here are some videos </a>from Microsoft's website on them. <br /><br />One other comment regarding any fear people have about upgrading. Vista has taken the brunt of most of the big changes and now Windows 7 just makes all of the difficult stuff seem easy. All of the driver incompatibilities, Vista went through it, Windows 7 will use the same drivers for the most part so it's set for most/all software and hardware. Most of the complaints I had about Vista were virtually gone immediately after the upgrade to Windows 7.<br /><br />Oh, and CRM totally works on Windows 7, since IE8 works with CRM Windows 7 just had to be able to run IE8. <br /><br />Anyway, if you haven't had a chance to play with it, get yourself ready for Oct 22.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com3tag:blogger.com,1999:blog-24442589.post-66910827256805521102009-10-09T07:29:00.000-07:002009-10-09T08:32:03.809-07:00Microsoft Dynamics CRM 4.0 Adapter for Microsoft Dynamics GP 10.0This week Microsoft released their integration adapter for Dynamics CRM and GP. This is now Microsoft's third attempt at integrating their own applications. <br /><br />For anyone who used their first integration solution with BizTalk server in CRM v1.2, my hat goes off to you. It was a bear to set up, even worse to troubleshoot, and once everything was in place you never breathed on that thing again for fear of it breaking it was so delicate. <br /><br />The integration with CRM 3.0 and GP 9.0 was much better but still had a lot of limitations. And since the previous attempt was so ugly I think most people avoided it.<br /><br />And now, we have been introduced to the integration between CRM 4.0 (Rollup 5) and GP 10.0 (SP4) (yes those are the minimum software requirements for the integration). At first glance the tool looks like a lot more time, effort and thought was put into this integration than the other previous attempts. Well, a lot of thought and effort was put into the BizTalk integration I'm sure, it just didn't work.<br /><br />The integration runs on a service and the console has been built on WFP. In it's current version 1.0 status it links up very well between anything that comes out of the box. Without some customization there is no way to get custom attributes or entities. I'm not surprised by this because that's typically how Microsoft CRM additions start out. They make sure they can get the base entities handled, then they grow out to the custom entities. Case and point, look at CRM v1.2, no custom entities and limited custom attributes, CRM v3.0, custom entities and free reign of custom attributes; out of the box imports, only to out of the box entities in CRM 3.0 and CRM 4.0 allows for imports to custom entitites; etc). What this integration package will include however is it's own SDK so that partners, developers, customers, etc can write their own integration templates, integration links between fields, and integration connections (to other applications).<br /><br />This integration doesn't provide any upgrade path from previous integrations but it was mentioned how there are plans to include integration templates/connections to other Dynamics applications (Nav, AX, SL, CRM Online etc). But with the release of the SDK coming before the end of the year anyone will be able to work on their own integrations utilizing this tool. That's right, the SDK is going to allow for developers to create connections/adapters to whatever you can connect to, whether it be a Microsoft product or not. Now, here's the catch. They said that this was a "lightly extensible tool" so I'm not sure light they are talking about until I'm able to get a hold of the SDK. If you integrate any Dynamics product with another Dynamics product (CRM, GP, AX, NAV, SL) then the integration is 100% FREE (assuming that you have a current Enhancement/Support plan). However if you integrate with another system then you must purchase a Dynamics Client for Office (DCO) license. From the presentation slide they state:<br /><br />"...for every person who sends data to Microsoft Dynamics GP or receives data from Microsoft Dynamics GP must have a DCO license."<br /><br />Couple of high points, things that I liked:<br /><br />1. The Log/Error catching looked really good. The messages appeared to be detailed, read the problem fix it and then you could retry a given error again and have that push. You could stop a retry (default is to retry an error 7 times) and (again) retry the error after you stopped it.<br />2. Scheduling when a given adapter would run. Anywhere from Continuously (3 times a second) to Once. Very flexible and easy to set up.<br />3. SDK promises. Developers will be able to create their own mapping functions (if there were no SUM function you could create it with the SDK) and ability to add custom fields and connect to other systems.<br /><br />Couple things that I didn't like (personally):<br /><br />1. A lot of wizards. Wizards are great because they help guide you in a step by step process but it just seemed to me that there were wizards in places that didn't need to have them. For instance there is a wizard for mapping one field to another. If I map them, shouldn't it just map field to field and then if I want to do something more complex I would then edit the connection? Having wizards may be something that a lot of people like and makes this integration tool appealing to them, so don't let me get you down if you like them. I just set up a lot of data migration/integrations and thinking about the time I would have to spend mapping field to field for something that's not in a template already just seemed tedious.<br />2. I didn't get to see what really goes into writing a script on a mapping. I saw some scripts but thye were always cut of. The script looked like it was similar to VBScript but it definitely wasn't. It also appeared to be similar to Scribe's scripting language that is used between mappings though. So, I'm sure it will be some mesh of the two but at the same time it will be it's own beast to learn. It could be good, I just didn't get to see much of it.<br />3. Out of the box you can only use the templates that Microsoft provides, which is only between GP and CRM. It's version 1, but it's definitely limited in what it can do out of the box. A lot of development time will need to be spent if someone wants to integrate Vendors for instance. Hopefully a wizard will be built to build templates for GP records and any CRM entity.<br /><br />All in all, I'm actually excited to see where this integration goes. Integration packages from companies like Scribe and Nolan still have a leg up on this integration solution. But Microsoft is offering to allow it to customize it as necessary for any given solution. Scribe provides adapters that do a catch all and those adapters typically are pretty solid. But if you come across any issues with an adapter it has to go through development modifications within Scribe to get a fix. Again, Scribe is pretty good about getting those fixes out but your integration suddenly becomes subject to another company's timeline, and that timeline may or may not match your timeline for the integration being set up. On the other hand, no coding is required from products like Scribe to connect up to other applications, whereas Microsoft's solution will require A LOT of development.<br /><br />So, how do you get the adapter you ask? Well, you must place an order through Microsoft via PartnerSource. And you must be a Registered Dynamics GP Partner. They want to know who is using it so that they can release any updates/fixes to people who have it installed. Hey, if I had an out of the box integration and 2 months after release I realized that if under a certain condition my tool wiped out all customer numbers, or credit terms, or something very scary that could happen to an accounting system, I would want to push those out as fast as I could as well so that I wasn't sued for screwing up an entire business. <br /><br />My jury is still out on where this integration will fall within the integration competition market but it's peaked my interest and is definitely worth checking out. Free is free, and even though only out of the box fields can be used out of the box, most people who want to integrate these systems use the name field, the address fields, credit hold, terms, etc.<br /><br />Currently this version only supports US English language installations. Just be aware of that.<br /><br />For some more information on this you can check out Microsoft's Sales and Marketing collateral on PartnerSource or CustomerSource at the following locations:<br /><br />PartnerSource:<br /><a href="https://mbs.microsoft.com/partnersource/partneressentials/partnerreadiness/resourcing/MDCRMGPAdapter">https://mbs.microsoft.com/partnersource/partneressentials/partnerreadiness/resourcing/MDCRMGPAdapter</a><br /><br />CustomerSource:<br /><a href="https://mbs.microsoft.com/customersource/worldwide/us/productinformation/factsheets/MDCRMGPAdapter">https://mbs.microsoft.com/customersource/worldwide/us/productinformation/factsheets/MDCRMGPAdapter</a><br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-78688976016426421152009-10-05T09:27:00.000-07:002009-10-05T09:42:59.557-07:00Sure, anyone can Install MSCRM but...I've come across a number of, let's call them, not so stellar implementations and helped turn them around for the better. Some of the more interesting implementations I've come across are when no outside help is sought, even though everyone in the company knows full well that no one knows the first thing about Microsoft CRM.<br /><br />The IT guys install it (usually rather well) and then tell whatever department that demanded it to just run with it because IT installed it and they're done with it.<br /><br />The requesting department typically doesn't have much technical expertise so they try to rely on the IT department to help them out and there are varying degrees in which IT responds to that request. <br /><br />Worst case, some remote sales rep is given the task of setting up the system...but still hit his/her numbers, so it gets done "in his/her spare time." <br /><br />Better case, someone in IT helps to champion the initiative and drives the requirements for the software. One problem that does eventually arise from this is who is the true owner of the application. IT says that it's the given department's application so it's their's. But the department using it says that IT set it up so it should really be their's.<br /><br />In any case, someone who isn't sure of the full potential or even minimal potential of the software is left to implement this application. There are some implementations like this that go fairly well, but for the most part then end users are not very happy with the end result and fight having to use some crappy system that barely does what they want it to.<br /><br />This is where the value of a good CRM implementation team/resource makes a world of difference. Whether it be to just train the person or department implementating the application; to bringing someone on to take the implementation by the horns and make it work right. And this is true of any CRM system, not just Microsoft CRM. The challenges that arise include, business processes, the ability to see where processes can be improved upon, streamlined and automated; departmental hand-0ffs, and helping departments know when the ball truly is in their court; technical, translating processes into a program that can actually be used by end users; and training, both administrators and end users. That's just a high level, but in a nut shell, that's what it takes to get a CRM system implemented. <br /><br />Any CRM system is becoming more and more crucial to businesses these days in order to keep up with customer demand and staying on top of customers in real time. And a bad implementation will leave a bad taste in everyone's mouth, especially for a specific piece of software. So, from an implementor's stand point, please, everyone, do yourself a favor and take the time to implement your CRM system correctly. And for those of us that implement, please take the time necessary to implement your solution correctly because in my mind, the success of the company is directly tied to the success of your implementation.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com1tag:blogger.com,1999:blog-24442589.post-49791417681000250772009-09-25T16:22:00.000-07:002009-09-25T16:35:04.918-07:00Checking the size of your CRM tablesI'm sure this is posted a few other places, so I definitely cannot take the credit for writing this script, but this is a great way to see what entities in CRM are taking up the most space. If space ever becomes an issue, or you're just looking to clean your data a bit and make querying your data a little faster (due to less data to be sifted through), this is a good way to find where you should focus your attention.<br /><br />Run this SQL script against the Organization data base (OrgName_MSCRM):<br /><br />SELECT<br />sys.schemas.[name] AS [Schema],<br />sys.tables.name AS [Table],<br />COALESCE([Row Count].[Count], 0) AS [Rows],COALESCE(8192 * [Data Pages].[Count],0) AS [Data Bytes],<br />COALESCE(8192 * [Index Pages].[Count],0) AS [Index Bytes]<br />FROM sys.tables<br />INNER JOIN sys.schemas ON sys.schemas.schema_id = sys.tables.schema_id<br />LEFT OUTER JOIN (SELECTobject_id,<br />SUM(rows) AS [Count]<br />FROM sys.partitions<br />WHERE index_id < 2<br />GROUP BY object_id) AS [Row Count] ON [Row Count].object_id = sys.tables.object_id<br />LEFT OUTER JOIN (SELECTsys.indexes.object_id,<br />SUM(CASE WHEN a.type <> 1<br />THEN a.used_pages<br />WHEN p.index_id < 2<br />THEN a.data_pages<br />ELSE 0 END) AS [Count]<br />FROM sys.indexes<br />INNER JOIN sys.partitions AS p<br />ON p.object_id = sys.indexes.object_id<br />AND p.index_id = sys.indexes.index_id<br />INNER JOIN sys.allocation_units AS a ON a.container_id = p.partition_id<br />GROUP BY sys.indexes.object_id) AS [Data Pages]<br />ON [Data Pages].object_id = sys.tables.object_id<br />LEFT OUTER JOIN (SELECTsys.indexes.object_id,<br />SUM(a.used_pages - CASE<br />WHEN a.type <> 1<br />THEN a.used_pages<br />WHEN p.index_id < 2<br />THEN a.data_pages<br />ELSE 0 END) AS [Count]<br />FROM sys.indexes<br />INNER JOIN sys.partitions AS p<br />ON p.object_id = sys.indexes.object_id<br />AND p.index_id = sys.indexes.index_id<br />INNER JOIN sys.allocation_units AS a ON a.container_id = p.partition_id<br />GROUP BY sys.indexes.object_id) AS [Index Pages]<br />ON [Index Pages].object_id = sys.tables.object_id<br />ORDER BY sys.tables.[name]<br /><br />Hope this comes in handy to someone else.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-88274660305713417392009-09-18T09:28:00.000-07:002009-09-18T09:46:58.862-07:00SiteMap Privilege TagAt times there are users who need to read data from entities but those same users should never really see the full list of items of that entity in a place where they could take action against any of the items.<br /><br />For example, an entity called "Locations" exists in CRM. Users will need to have the ability to view these Locations in order to enter a Location on a related object form, perhaps an Account. As an administrator you would like to have the list available to you so that you can add to or modify the list for the users. It could be placed in the Settings area and sometimes that is enough to keep people away from the list. But just to be safe you want to guarantee that users cannot do anything to the list.<br /><br />This is where SiteMap Privilege tags come in. Within each SubArea tag a Privilege tag can be added. When a Privilege tag is applied, CRM will check on the main page load what privileges the user has to see if that user should be able to see the item. If the user does not have rights, then the item is not shown, if the user does have rights then the item is shown.<br /><br />So, following our example from above the following could be inside the SiteMap:<br /><br /><SubArea Id="new_location " Entity="new_location"><br /><Privilege Entity="new_location" Privilege="Write" /><br /></SubArea><br /><br />By setting the privilege to "Write" only those users that have the write privilege will be able to view the entity from the main CRM page. Multiple privileges may be used as well. Here are the possible values from the SDK:<br /><br />All<br />AllowQuickCampaign<br />Append<br />AppendTo<br />Assign<br />Create<br />Delete<br />Read<br />Share<br />Write<br /><br />Here's an example with multiple privileges:<br /><br /><SubArea Id="new_location " Entity="new_location"><br /><Privilege Entity="new_location" Privilege="Read,Write,Share" /><br /></SubArea><br /><br />And finally, get creative. Just because the area is for an entity doesn't mean that the privilege has to be for the same entity. Perhaps the Location entity should only show up to users who have rights to write to the Knowledge Base. The following would be completely legit as well:<br /><br /><SubArea Id="new_location " Entity="new_location"><br /><Privilege Entity="kbarticle" Privilege="Read,Write" /><br /></SubArea><br /><br />Now your main CRM page can be much more dynamic depending on who you are.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com2tag:blogger.com,1999:blog-24442589.post-70405922733028013142009-09-14T08:56:00.001-07:002009-09-14T09:09:30.865-07:00Managing the AsyncOperationBase table entriesSince Update Rollup 3 a new function has been available but most likely not very widely used. That is the function of AsyncRemoveCompletedWorkflows. There is a Microsoft KB article on this that you can read <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;968755">here</a>. But this function makes it so that as soon as a workflow (asynchronous job) is completed it is then marked for deletion. <br /><br />This hotfix is proactive only. Therefore, when the hotfix is installed and activated, only new workflow records are deleted automatically. If the AsyncOperationBase and WorkflowLogBase tables are already large because of these workflow records, you must perform a cleanup of these tables by using the Microsoft SQL Server cleanup script that is included in the following Microsoft Knowledge Base article:<br /><a class="KBlink" href="http://support.microsoft.com/kb/968520/" jquery1252943751747="61">968520</a> (http://support.microsoft.com/kb/968520/ ) Performance is slow if the AsyncOperationBase table becomes too large in Microsoft Dynamics CRM 4.0 (from KB article 968755).<br /><br />I have had some clients not manage this table very well and it made their system a bit slower or just waste data space. One client had over 3 million rows in this table and their Company_MSCRM database was over 15GB. I cleaned out the table and brought the database size down to 1.4GB. That's a lot of space being wasted. If you want the logs, then it's not wasted space but I doubt that every row of that table needs to be saved, so figure out what workflow types you need and keep those and clear out the rest. <br /><br />Another great blog regarding this issue can be found <a href="http://blogs.msdn.com/benlec/archive/2009/01/20/deadlocks-performance-issues-mscrm-database-growth-asyncoperationbase-table-increase.aspx">here</a>. Ben goes into a lot more depth and really talks through some great ways to manage your DB, especially the AsyncOperationBase table.<br /><br />Hope this is helpful to others.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-33743419697724899782009-09-04T08:56:00.000-07:002009-09-14T08:40:11.288-07:00Scribe MVP<div><br /><br /><div><a href="http://www.scribesoft.com/">Scribe Software</a> has just announced their MVP program and honored me with being invited and accepted into their MVP community.<br /><br />Scribe Most Valuable Professionals represent the most experienced and skilled Scribe users from among our over 800 partners, 10,000 customers and related software vendors. Scribe MVP’s are invited to join the program based on their skills, experience and contribution to the Scribe OpenMind community. For details on the Scribe MVP program <a href="http://www.scribesoft.com/MVP-Program.asp">click here</a>.<br /><br />As a note, the current 13 MVP's (as far as I am aware) were all invited/nominated by Scribe employees and the technical team. Don't quote me on that but since they state in their "How to become an MVP" document that you are either "nominated by someone from Scribe, someone else, or yourself", no one other than Scribe knew this was coming. Meaning the invites could only have come from the people within their company. Which speaks to the expertise and involvement of these initial MVP's with Scribe's software and the team behind it. To see the full listing of Scribe MVP's <a href="http://www.scribesoft.com/MVP.asp">click here</a>.<br /><br />And if you are unfamiliar with Scribe's services you should definitely check out their website. For data imports, data movement, and system integrations Scribe has a very robust platform and capability to connect and push/pull data from almost any data source. Their library of application adapters is growing and they have found a good niche in the Microsoft Dynamics arena. Did anyone else notice that all of the MVP's are from the Microsoft Dynamics CRM realm? Microsoft CRM typically takes companies from an old CRM system, or Excel Sheets, Outlook contacts, or any other random place that people have decided to track information regarding customers or something that makes up the X in their new XRM solution. Scribe bridges that gap by giving visibility to data and mapping data with custom logic so that the data can be imported correctly and even have some clean up done on the way into the new system.<br /><br />My congradulations to all of the other Scribe MVP's and thanks to Scribe and their team for this honor.<br /><br />David Fronk<br />Dynamic Methods Inc.</div><div></div><div></div><br /><div><a href="http://www.scribesoft.com/mvp.asp"><img style="MARGIN: 0px 10px 10px 0px; WIDTH: 180px; FLOAT: left; HEIGHT: 87px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5381348203969396866" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy7vd2xivVejln200aq76RWvSJWkJ5KoO5Igxa1_aMFrTX-ExivLmDb4GpUreobNH5pFC_HqPpLeMYwQ-_vTn4cDcHHCDGGGTSOrvvyjRdKddPwhDhYe-9PZFFDV3PqFUPuMl6/s400/ScribeMVP_badge_large.jpg" /></a></div></div>Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com1tag:blogger.com,1999:blog-24442589.post-24638230067191515252009-08-29T08:45:00.000-07:002009-08-29T08:47:15.414-07:00Rollup 6 is now availableRollup 6 is a cumulative set of updates so if you haven't applied any rollups yet this should get you all taken care of.<br /><br /><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=79f90982-c039-41c2-af8e-3119ecf27790#tm">Download Rollup 6 here.</a><br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-41797702468953846752009-08-21T10:02:00.000-07:002009-08-21T10:21:13.939-07:00Using Fiddler to troubleshoot webpage errorsThere are cases where I get the dreaded error message telling me:<br /><br /><br />"An error occured. Try this action again. If the problems continues, check the Microsoft Dynamics CRM Community for solutions or contact your organization's Microsoft Dynamics CRM Administrator. Finally, you can contact Microsoft Support."<br /><br /><br />When there are no errors in the server Event Log usually you have to resort to running a trace and then sifting through the huge text file to find the error. However, <a href="http://www.fiddler2.com/fiddler2/">Fiddler </a>can give you the error without having to be on the server and without having to sift through huge text files for one line of an error message.<br /><br /><br /><br />Start up Fiddler, reproduce the error and then I typically look at the timeline, that shows a big error symbol. Double click on that symbol and you'll see the error you couldn't otherwise see.<br /><br /><br /><br /><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 427px; DISPLAY: block; HEIGHT: 403px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5372467948681709906" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqYqpQwJpHxl7j04R3uWyht2yM7KZCgmbawUmjrS2XtKkB60xHu2zaTI8ltPniNGKtRxgt3Dq0xuOX3_f81UCwfB3GKbl-hz_wu-GcWKmZO30tgsPQRoA8tcfdb6J-VQiSxXnx/s400/1.JPG" /><br />Something rather simple but can make troubleshooting that much faster.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-9923620256387367222009-08-14T02:47:00.000-07:002009-08-14T08:57:25.527-07:00Expose Associate and Disassociate SDK MessagesI had a need to run plugins off of the Associate and Disassociate of a many to many relationship and quickly found out that those triggers aren't exposed. So, I did some poking around and found from Aaron Elder an unsupported hack to enable them. You basically change a couple of zero's to one's and then the triggers are exposed in the Plugin Registration tool and off you go. Here's <a href="http://consulting.ascentium.com/blog/crm/Post533.aspx">Aaron's original post </a>if you want to check it out. And here's <a href="http://blogs.msdn.com/lezamax/archive/2009/05/05/no-plug-ins-for-n-n-relationships-associate-disassociate.aspx">another post</a> from a Microsoft rep talking about this very topic.<br /><br />Here's the SQL query that he wrote and posted for everyone to use:<br /><br /><br />-- ============================================================================-- Enable Associate and Disassociate Plug-in Events Script v1.0-- ------------------------------------------------------------------------------ (c) 2009 Aaron Elder-- ============================================================================-- DISCLAIMER:-- This script is provided "AS IS" with no warranties, and confers no rights.-- ============================================================================-- While this is obviously "unsupported", I think the fact that these events-- are not available is a bug and hopefully it will be fixed in a rollup.-- ============================================================================USE AscentiumCrmDev_MSCRMGO-- Find the deployments SDK Filter ID for the-- Associate and Disassociate Entity SDK MessagesDECLARE @DisassociateEntitiesFilterId uniqueidentifierDECLARE @AssociateEntitiesFilterId uniqueidentifierSET @DisassociateEntitiesFilterId = (SELECT SdkMessageId FROM SdkMessageBase WHERE [Name] = 'DisassociateEntities')SET @AssociateEntitiesFilterId = (SELECT SdkMessageId FROM SdkMessageBase WHERE [Name] = 'AssociateEntities')-- Enable the Associate and Disassociate Filters to be valid for custom processing-- Custom Processing means "you register plug-ins against it"-- Note: We only do this for the "generic" (OTC == 0) case, just to be saferUPDATE SdkMessageFilterBase SET IsCustomProcessingStepAllowed = 1<br />WHERE SdkMessageId = @DisassociateEntitiesFilterId AND PrimaryObjectTypeCode = 0<br /><br />UPDATE SdkMessageFilterBase SET IsCustomProcessingStepAllowed = 1<br />WHERE SdkMessageId = @AssociateEntitiesFilterId AND PrimaryObjectTypeCode = 0<br /><br />What I am going to add is the method to get the ID's from within your plugin. These messages don't use any image information so don't even register images for them. Just the message, entity name and the rest you can leave default.<br /><br />Here's the code to get the ID's:<br /><br />stringprimaryEntityid="";<br />stringsecondaryEntityid="";<br />switch(context.MessageName)<br />{<br />case"AssociateEntities":<br />if(context.InputParameters.Properties.Contains("Moniker1"))<br />{<br />associatedEntity1=(Moniker)context.InputParameters.Properties["Moniker1"];<br />primaryEntityid=associatedEntity1.Id.ToString();<br />}<br />if(context.InputParameters.Properties.Contains("Moniker2"))<br />{<br />associatedEntity2=(Moniker)context.InputParameters.Properties["Moniker2"];<br />secondaryEntityid=associatedEntity2.Id.ToString();<br />}<br />if(context.InputParameters.Properties.Contains("RelationshipName"))<br />{<br />relationshipname=context.InputParameters.Properties["RelationshipName"].ToString();<br />}<br />break;<br />case"DisassociateEntities":<br /><br />if(context.InputParameters.Properties.Contains("Moniker1"))<br />{<br />associatedEntity1=(Moniker)context.InputParameters.Properties["Moniker1"];<br />primaryEntityid=associatedEntity1.Id.ToString();<br />}<br />if(context.InputParameters.Properties.Contains("Moniker2"))<br />{<br />associatedEntity2=(Moniker)context.InputParameters.Properties["Moniker2"];<br />secondaryEntityid=associatedEntity2.Id.ToString();<br />}<br />if(context.InputParameters.Properties.Contains("RelationshipName"))<br />{<br />relationshipname=context.InputParameters.Properties["RelationshipName"].ToString();<br />}<br />break;<br />}<br /><br /><br /><br />With this being unsupported you never know what is going to happen and you're not going to find any documentation. I found rather quickly that I was able to overload the Disassociate message without too much trouble. So, I ended up in changing my plugin to run asynchronously and that got it to work without error. The errors I saw were related to time out errors or the server not being available. The event logs will even show you the webpage that is being called when you run the plugin that does all of the webservice stuff.<br /><br /><br /><br />Fiddle with it, play with it, enjoy the new freedom! And cross your fingers that these messages become supported in the next version.<br /><br /><br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-14895337799623889392009-08-07T09:24:00.000-07:002009-08-07T09:33:16.835-07:00Modifying the number of items in the Outlook MRUPhilip Richardson posted about this a long time ago, but his post has actually not available any more. This is a great hack to make an end user's life a lot easier. By default the Outlook Most Recently Used (MRU) list is set to 7 items. A lot of users I talk to like it to be longer. And there is a simple registry modification that can be made to increase (or decrease) the length of the list.<br /><br />Add the following reg key to the client machine that wants the length of the MRU changed:<br /><br />HKEY_CURRENT_USER\Software\Microsoft\MSCRMClient<br />Value Name: MaxRegardingObjectListCount<br />Type: REG_DWORD<br /><br />Then just put the number you want displayed (in Decimal format) and you're all set. You will most likely need to close your Outlook and reopen it for the changes to take effect.<br /><br />Also, please note that you should know what you are doing when you are changing the registry (be careful), as if you modify it incorrectly it could make your application, or computer not work properly any more. Modifying the registry is done at your own risk.<br /><br />But that should get you going. Enjoy,<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com2tag:blogger.com,1999:blog-24442589.post-79407074865942223332009-07-31T11:18:00.000-07:002009-07-31T11:40:16.907-07:00Setting Notes back to Auto ExpandThere have been a few times where the Notes section and an IFrame end up on the same tab in CRM. And typically people want the IFrame to show whatever is being displayed to auto expand with the page so that the webpage, report or whatever it's displaying will look good. However, when you do that, it modifies the Notes so that they do not auto expand any more. And since you are not able to modify the Notes properties from the user interface, getting Notes to auto expand with the growth of the window has just become more difficult.<br /><br />The way around this is to export the XML of the entity and modify the Note XML node. Here is what you Notes XML should look like:<br /><br /><section showlabel="true" showbar="true" locklevel="1" id="{B798FA27-F9FC-4580-988C-0BA75C444488}" IsUserDefined="0" height="auto" labelwidth="115"><br /> <labels><br /> <label description="Notes" languagecode="1033" /><br /> </labels><br /> <rows><br /> <row><br /> <cell colspan="2" showlabel="false" rowspan="5" auto="true" id="{8f4963e9-b4cb-4713-b370-62070594185b}"><br /> <labels><br /> <label description="Note Text" languagecode="1033" /><br /> </labels><br /> <control id="notescontrol" classid="{06375649-c143-495e-a496-c962e5b4488e}" /><br /> </cell><br /> </row><br /> <row /><br /> <row /><br /> <row /><br /> <row height="auto" /><br /> </rows><br /></section><br /><br />The important points to take away are the height = "auto", auto="true" and the rowspan="5" options. For whatever reason if I didn't set the rowspan equal to 5 the auto growth wouldn't work. <br /><br />Set the XML right, reimport the XML, publish and you're Notes will be fixed.<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0tag:blogger.com,1999:blog-24442589.post-91586986434177360832009-07-24T17:38:00.000-07:002009-07-24T17:48:52.299-07:00DM Convergence - August 5th Microsoft Irvine OfficeIf you haven't already heard Dynamic Methods is holding it's own Convergence for anyone interested in learning more about Microsoft Dynamics CRM and GP. <a href="https://www.clicktoattend.com/invitation.aspx?code=138901">You can click here to register to attend</a>.<br /><br />The event will be held at:<br /><br />Microsoft Corporation<br />Three Park Plaza<br />Suite 1600<br />Irvine, CA 92614<br />USA<br /><br />Here's what the agenda looks like:<br /><br />Agenda: 8:30 AM - Registration and Welcome9:00 AM - Kickoff and Introduction9:15 AM - Keynote speaker - Andrea Edwards from Franklin Covey: Business at the Speed of Trust<br />10:10 AM - Microsoft Roadmap - Michael Strand<br />10:30 AM - GP & CRM Highlights11:00 PM - Training and Breakout Sessions<br /> GP - 50 Tips and Tricks<br /> SharePoint - Business Workflow<br /> CRM - Advanced Find and Reporting Benefits<br /> CRM - CRM as an XRM System<br />12:00 PM - Lunch<br />1:00 PM - Training and Breakout Sessions<br /> GP - 10.0 Enhancements and 3rd Party Tools<br /> GP - Report ing SRS, Excel Link, and SmartList Builder<br /> CRM - Tips and Tricks<br /> CRM - Accelerators and DM Products<br />2:45 PM - Training and Breakout Sessions<br /> GP - Business Portal<br /> GP - FRx Tips and Tricks<br /> CRM - Workflow and Sales Force Automation<br /> CRM - Power of Scripting<br />4:30 PM - Closing<br /><br />Registration is $99 ($49 if you register before 7/27/09). <br /><br />Hope to see you there!<br /><br />David Fronk<br />Dynamic Methods Inc.Dynamic Methodshttp://www.blogger.com/profile/04411546944379303169noreply@blogger.com0