<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dpp.sagecrm.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title /><link>http://dpp.sagecrm.com/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Come &amp; see us at Technology for Marketing (TFM&amp;A), Earls Court 2, London 23-24 Feb, 2010</title><link>http://dpp.sagecrm.com/blogs/talking_about_customers/archive/2010/02/17/come-amp-see-us-at-technology-for-marketing-tfm-amp-a-earls-court-2-london-23-24-feb-2010.aspx</link><pubDate>Wed, 17 Feb 2010 17:25:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3403</guid><dc:creator>David Beard</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;quot;&lt;em&gt;It&amp;#39;s all in the mix&lt;/em&gt;&amp;quot;&amp;nbsp; ~ that&amp;#39;s what the organisers say.&lt;/p&gt;
&lt;p&gt;&lt;a class="" title="More details about TFM&amp;amp;A" href="http://www.t-f-m.co.uk/page.cfm/Link=138/t=m/goSection=2" target="_blank"&gt;TFM&amp;amp;A&lt;/a&gt; is the UK&amp;#39;s leading integrated marketing event, with insights into data, CRM, digital and more.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Duncan Wood &amp;amp; myself will be speaking on Tuesday &amp;amp; Wednesday respectively.&amp;nbsp; Duncan will be talking about the &lt;a class="" title="Duncan Wood&amp;#39;s talk @ TFM&amp;amp;A" href="http://www.t-f-m.co.uk/page.cfm/Action=Seminars/SeminarID=53" target="_blank"&gt;power of mobile CRM&lt;/a&gt;, while I will be looking at the intersection of &lt;a class="" title="David Beard&amp;#39;s slot at TFM&amp;amp;A" href="http://www.t-f-m.co.uk/page.cfm/Action=Seminars/SeminarID=60" target="_blank"&gt;CRM &amp;amp; Social Media strategies&lt;/a&gt;, along with some tips from Sage&amp;#39;s social media learning.&lt;/p&gt;
&lt;p&gt;Come along &amp;amp; say hello !&lt;/p&gt;
&lt;p&gt;-= David&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3403" width="1" height="1"&gt;</description></item><item><title>Web to Lead example files</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/08/web-to-lead-example-files.aspx</link><pubDate>Mon, 08 Feb 2010 13:46:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3375</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I have discussed Web to Lead a few times previously:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2008/12/17/webtolead-https-and-ports.aspx"&gt;WebToLead, HTTPS and Ports&lt;/a&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2009/10/01/working-around-date-time-field-issues-in-web-to-lead-forms-in-sage-crm-6-2.aspx"&gt;Working around Date/Time field issues in Web to Lead forms in Sage CRM 6.2&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;As part of my revision of my training materials in preparation for Sage CRM v7 I have added a couple of HTML files to the resource section.&amp;nbsp; These extra files should save a little bit of work for those of you wanting to demonstrate the Web To Lead feature.&lt;/p&gt;
&lt;p&gt;A quick way of using them is to unzip them in to the root of the default Self Service install.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;C:\Program Files\Sage\CRM\CRMSelfServiceDemo &lt;/p&gt;
&lt;p&gt;The files follow the look and feel of the demo Panoply Technologies self service site.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;webtolead.html&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;webtoleadthanks.html&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead1.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The webtolead.html file can be edited by dropping in the HTML generated by the Web to Lead feature.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead3.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead3.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They can then be accessed by browsing to:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://localhost/crmselfservicedemo/webtolead.html"&gt;http://localhost/crmselfservicedemo/webtolead.html&lt;/a&gt;&lt;br /&gt;and&lt;/p&gt;
&lt;p&gt;&lt;a href="http://localhost/crmselfservicedemo/webtoleadthanks.html"&gt;http://localhost/crmselfservicedemo/webtoleadthanks.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead4.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/webtolead4.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3375" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Download/default.aspx">Download</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/WebtoLead/default.aspx">WebtoLead</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Web+To+Lead/default.aspx">Web To Lead</category></item><item><title>WebServiceSoapClient() vs WebService() or (Add Service Reference vs Add Web Reference)</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/05/webservicesoapclient-vs-webservice-or-add-service-reference-vs-add-web-reference.aspx</link><pubDate>Fri, 05 Feb 2010 17:07:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3370</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As I noted in my earlier article (&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/05/windows-visual-studio-2008-and-sage-crm-web-services.aspx"&gt;Visual Studio 2008 and Sage CRM Web Services&lt;/a&gt;) if you are using Visual Studio 2008 then it is perfectly possible to continue to use the Add Web Reference way of working.&amp;nbsp; And it is up to you which way you choose to code.&lt;br /&gt;&lt;br /&gt;If you have used &amp;#39;Add Service Reference&amp;#39; to connect to a CRM install then you will be using the WebServiceSoapPort class.&amp;nbsp; Below are just 2 examples of how the code will differ.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Log on (WebServiceSoapClient)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WebServiceSoapPort CRMService = new WebServiceSoapPortClient();&lt;br /&gt;logonRequest crmLogonRequest = new logonRequest();&lt;br /&gt;crmLogonRequest.username = &amp;quot;Admin&amp;quot;;&lt;br /&gt;crmLogonRequest.password = &amp;quot;P455w0rd&amp;quot;;&lt;br /&gt;logonResponse CRMLogon = CRMService.logon(crmLogonRequest);&lt;/p&gt;
&lt;p&gt;SessionHeader crmSessionHeader = new SessionHeader();&lt;br /&gt;crmSessionHeader.sessionId = CRMLogon.result.sessionid;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logon (WebService)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WebService CRMService = new WebService();&lt;br /&gt;logonresult CRMLogon = CRMService.logon(&amp;quot;Admin&amp;quot;, &amp;quot;P455w0rd&amp;quot;);&lt;/p&gt;
&lt;p&gt;CRMService.SessionHeaderValue = new SessionHeader();&lt;br /&gt;CRMService.SessionHeaderValue.sessionId = CRMLogon.sessionid;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logoff (WebServiceSoapClient)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;logoffRequest crmLogoffRequest = new logoffRequest();&lt;br /&gt;crmLogoffRequest.SessionHeader = crmSessionHeader;&lt;br /&gt;crmLogoffRequest.sessionId=CRMLogon.result.sessionid;&lt;br /&gt;logoffResponse crmLogoff = CRMService.logoff(crmLogoffRequest);&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logoff (WebService)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CRMService.logoff(CRMService.SessionHeaderValue.sessionId);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3370" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SOAP/default.aspx">SOAP</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Add+Service+Reference/default.aspx">Add Service Reference</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Add+Web+Reference/default.aspx">Add Web Reference</category></item><item><title>Updating/Hidding a value on the fly before it gets displayed</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/05/updating-hidding-a-value-on-the-fly-before-it-gets-displayed.aspx</link><pubDate>Fri, 05 Feb 2010 16:28:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3369</guid><dc:creator>Wing Kwong</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;This technique&amp;nbsp;can be&amp;nbsp;used to hide or update HTML content.&amp;nbsp; With most fields being identified with a &amp;lt;DIV ID=....&amp;gt; tag, you can use the innerHTML method in Javascript. However, let&amp;#39;s say you want to change a particular Error message.&amp;nbsp;The error message tag&amp;nbsp;is not idented.&amp;nbsp; The source code looks like this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span class="845471219-04022010"&gt;&lt;font face="Arial" color="#0000ff" size="2"&gt;&amp;lt;TABLE WIDTH=100% &lt;strong&gt;CLASS=ErrorContent&lt;/strong&gt;&amp;gt;&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Error Mesage&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&amp;lt;/TABLE&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;In order to hide or change it, you will have to use its class instead. The following script can be placed under&amp;nbsp;&amp;quot;Custom Content&amp;quot;.&lt;/p&gt;
&lt;div align="left"&gt;&lt;font face="Arial" color="#0000ff" size="2"&gt;&lt;span class="250303819-04022010"&gt;&amp;lt;script for=window event=onload&amp;gt; &lt;br /&gt;function LoadMe(){ &lt;br /&gt;document.getElementsByClassName = function(cl) {&lt;br /&gt;var retnode = [];&lt;br /&gt;var myclass = new RegExp(&amp;#39;\\b&amp;#39;+cl+&amp;#39;\\b&amp;#39;);&lt;br /&gt;var elem = this.getElementsByTagName(&amp;#39;*&amp;#39;);&lt;br /&gt;for (var i = 0; i &amp;lt; elem.length; i++) {&lt;br /&gt;var classes = elem[i].className;&lt;br /&gt;if (myclass.test(classes)) retnode.push(elem[i]);&lt;br /&gt;}&lt;br /&gt;return retnode;&lt;br /&gt;}; &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Arial" color="#0000ff" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;&lt;font face="Arial" color="#0000ff" size="2"&gt;&lt;span class="250303819-04022010"&gt;
&lt;div align="left"&gt;var myElement = document.getElementsByClassName(&amp;#39;ErrorContent&amp;#39;)[0]; &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;if (myElement.innerText==&amp;#39;ImpersonateLoggedOnUser2 failed 5&amp;#39;){&lt;br /&gt;myElement.innerText=&amp;quot;Please check your domain security settings.&amp;quot;;&lt;br /&gt;}&lt;/div&gt;
&lt;div align="left"&gt;} &lt;br /&gt;LoadMe();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;In the script above, it will change the message if the error is &amp;quot;ImpersonateLoggedOnUser2 failed 5&amp;quot; to something else.&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3369" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2008 and Sage CRM Web Services</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/05/windows-visual-studio-2008-and-sage-crm-web-services.aspx</link><pubDate>Fri, 05 Feb 2010 15:51:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3368</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I have recently received a couple of emails asking me for help with starting a Web Service project when using Visual Studio 2008.&amp;nbsp; Both my correspondents had previously been using Visual Studio 2005 and had been used to adding Web References.&lt;/p&gt;
&lt;p&gt;In Visual Studio 2005 a web reference would be added from the Project menu as in the image below.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addwebreference1.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addwebreference1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The URL for the Sage CRM installation would be entered and the web reference was complete.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addwebreference2.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addwebreference2.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BUT in a new Visual Studio 2008 Add Web Reference seems to have disappeared!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference1.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference1.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;Add Web Reference&amp;quot; has not disappeared but it is hiding.&amp;nbsp; This is because &amp;quot;Add Web Reference&amp;quot; uses .Net Framework 2.0. conventions and technology.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you want to add a Web Reference in Visual Studio 2008&lt;/p&gt;
&lt;p&gt;Use the Add Service Reference option from the Project menu&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference2.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference2.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And then click the Advanced... button to open the Service Reference Settings Screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference3.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/addservicereference3.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can now click the &amp;#39;Add Web Reference&amp;#39; button which produces the familiar screen above.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3368" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Add+Service+Reference/default.aspx">Add Service Reference</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Add+Web+Reference/default.aspx">Add Web Reference</category></item><item><title>New Video explaining how SData is used in the Interactive Dashboard in Sage CRM v7</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/02/01/new-video-explaining-how-sdata-is-used-in-the-interactive-dashboard-in-sage-crm-v7.aspx</link><pubDate>Mon, 01 Feb 2010 09:07:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3365</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;A new video that discusses the use of SData in the Sage CRM v7 Interactive Dashboard has been added to the SData showcase &lt;a href="http://sdata.sage.com/sdatacore_showcases.html"&gt;site&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The Sage CRM new Interactive Dashboard enables simple, codeless data integration with the SData Gadget. Simply by point-and-click interaction, a user can integrate other Sage products like ERP systems and even third party vertical customizations from our Business Partner community.&lt;/p&gt;
&lt;p&gt;To view the video click &lt;a href="http://sdata.sage.com/sdatacore_showcases_SageCRMDashboard.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3365" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+7.0/default.aspx">Sage CRM 7.0</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Interactive+Dashboard/default.aspx">Interactive Dashboard</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SData/default.aspx">SData</category></item><item><title>Localized Beta for Sage CRM v7 available </title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/29/localized-beta-for-sage-crm-v7-available.aspx</link><pubDate>Fri, 29 Jan 2010 15:42:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3363</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The localized feature review beta build of Sage CRM v7 is now available for download by invited beta programme participants. The localized builds for French, German, Spanish and Chinese have been added to the Sage CRM Beta Software folder in the Resources section.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/sage_crm_beta_software/entry3359.aspx"&gt;Sage CRM v7 Beta Release (Chinese)&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/sage_crm_beta_software/entry3362.aspx"&gt;Sage CRM v7 Beta Release (French)&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/sage_crm_beta_software/entry3360.aspx"&gt;Sage CRM v7 Beta Release (German)&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/sage_crm_beta_software/entry3361.aspx"&gt;Sage CRM v7 Beta Release (Spanish)&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; It is important that the &lt;a href="http://dpp.sagecrm.com/files/folders/sage_crm_beta_software/entry3347.aspx"&gt;release notes&lt;/a&gt; that apply to all languages are read by all beta participants.&lt;/p&gt;
&lt;p&gt;This beta phase is focused on gaining feedback on the new features in Sage CRM v7. &lt;/p&gt;
&lt;p&gt;The new features of Sage CRM v7 are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;The interactive dashboard&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Active directory provisioning&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;SData provider&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Interface enhancements and product branding updates&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Mixed and system expiry licensing&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;GCRM integration contract&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This phase will finish on 19th February 2010 so you will need to get your feedback in before then.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Please send all queries, issues and feedback to &lt;a href="mailto:SageCRMBeta7@Sage.com"&gt;SageCRMBeta7@Sage.com&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3363" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Chinese/default.aspx">Chinese</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+7.0/default.aspx">Sage CRM 7.0</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/beta/default.aspx">beta</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/German/default.aspx">German</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/French/default.aspx">French</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Spanish/default.aspx">Spanish</category></item><item><title>Revised and Updated C# Code Snippets for Visual Studio</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/29/revised-and-updated-c-code-snippets-for-visual-studio.aspx</link><pubDate>Fri, 29 Jan 2010 14:05:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3357</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;The code snippets that are installed as part of the Sage CRM SDK have been revised and edited.&amp;nbsp; Additional snippets for both the .NET API and the SOAP Web Service Interface have been created.&lt;/p&gt;
&lt;p&gt;The new version of the SDK installer will be available at the time of the release of Sage CRM v7.&amp;nbsp; Development partners who wish to use the new snippets independently of the SDK can download these now from the beta section of the resources area of the website.&amp;nbsp; The links can be found at the bottom of this article.&lt;/p&gt;
&lt;p&gt;These snippets work with both Visual Studio 2005 and Visual Studio 2008 and with Visual C# Express Edition.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Copy the Zip file to&lt;/p&gt;
&lt;p&gt;C:\Documents and Settings\[username]\My Documents\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;C:\Documents and Settings\[username]\My Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets&lt;/p&gt;
&lt;p&gt;The file &amp;quot;&lt;a href="http://dpp.sagecrm.com/files/folders/revised_sdk_resources/entry3355.aspx"&gt;Sage CRM 7 DOTNET Snippets.zip&lt;/a&gt;&amp;quot; should be unzipped to a folder called &amp;quot;Sage CRM 7 DOTNET Snippets&amp;quot;.&lt;br /&gt;The file &amp;quot;&lt;a href="http://dpp.sagecrm.com/files/folders/revised_sdk_resources/entry3356.aspx"&gt;Sage CRM 7 Web Service Snippets.zip&lt;/a&gt;&amp;quot; should be unzipped to a folder called &amp;quot;Sage CRM 7 Web Service Snippets&amp;quot;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3357" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Code+Snippets/default.aspx">Code Snippets</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/.NET+API/default.aspx">.NET API</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Sage CRM Solo Hints and Tips Guide</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/28/sage-crm-solo-hints-and-tips-guide.aspx</link><pubDate>Thu, 28 Jan 2010 16:05:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3351</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This document has been made available for development partners.&amp;nbsp; This covers version Sage CRM 6.2. &lt;/p&gt;
&lt;p&gt;We are pleased to announce the release of the &amp;#39;Sage CRM Solo Hints and Tips Guide&amp;#39;. This guide supplements the existing &amp;#39;Sage CRM 6.2 Solo Guide&amp;#39;. Its aim is to provide additional knowledge of the Solo module, specifically to CRM Professional Services, Implementers and those in Support Groups who support it. &lt;/p&gt;
&lt;p&gt;It provides a run-through of our disconnected solution for distributed remote clients. It outlines the Solo module’s purpose, it describes how it currently works, it provides tips and hints for implementing it, it documents ‘known’ error messages and their resolutions, it provides frequently asked questions and associated answers.&lt;/p&gt;
&lt;p&gt;We give hints on best practise when carrying out a Solo Implementation and tips on supporting/trouble shooting Solo functionality effectively. &lt;/p&gt;
&lt;p&gt;This is in effect a ‘Best Practise’ Solo Guide, to aid those implementing and supporting it towards setting up this module successfully.&lt;/p&gt;
&lt;p&gt;Development Partners can download the guide from here: &lt;a href="http://dpp.sagecrm.com/files/folders/additional_documentation/entry3350.aspx"&gt;Sage CRM Solo Hints and Tips Guide&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3351" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SOLO/default.aspx">SOLO</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.2/default.aspx">Sage CRM 6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/System+Administration/default.aspx">System Administration</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/6.2/default.aspx">6.2</category></item><item><title>Final Beta for Sage CRM v7 available today</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/26/final-beta-for-sage-crm-7-0-available-tomorrow.aspx</link><pubDate>Tue, 26 Jan 2010 14:44:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3333</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The team in Dublin will release the feature review beta build of Sage CRM v7 (English Language) on Tuesday 26th January 2010 for download by invited beta programme participants. This is the final phase of the overall beta programme for Sage CRM v7. &lt;/p&gt;
&lt;p&gt;This beta phase is focused on gaining feedback on the new features in Sage CRM v7. &lt;/p&gt;
&lt;p&gt;The new features of Sage CRM v7 are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The interactive dashboard&lt;/li&gt;
&lt;li&gt;Active directory provisioning&lt;/li&gt;
&lt;li&gt;SData provider&lt;/li&gt;
&lt;li&gt;Interface enhancements and product branding updates&lt;/li&gt;
&lt;li&gt;Mixed and system expiry licensing&lt;/li&gt;
&lt;li&gt;GCRM integration contract&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This phase will finish on 19th February 2010 so you will need to get your feedback in before then.&amp;nbsp;&amp;nbsp; On Friday 29th January 2010 localized versions of the beta will be available; French, German, Spanish and Chinese. &lt;/p&gt;
&lt;p&gt;Please send all queries, issues and feedback to &lt;a href="mailto:SageCRMBeta7@Sage.com"&gt;SageCRMBeta7@Sage.com&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3333" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+7.0/default.aspx">Sage CRM 7.0</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/beta/default.aspx">beta</category></item><item><title>Sage CRM 6.2 Quick Start Performance Guide</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/26/sage-crm-6-2-quick-start-performance-guide.aspx</link><pubDate>Tue, 26 Jan 2010 09:41:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3323</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;This document has been made available for development partners.&amp;nbsp; This covers version Sage CRM 6.2. &lt;/p&gt;
&lt;p&gt;We are pleased to announce the release of the &amp;#39;Sage CRM Quick Start Performance Guide&amp;#39;.&amp;nbsp; The idea behind this Guide is to provide you with some quick hints and tips to try to optimize CRM performance before an Implementer leaves a Customer site, and around the time a Customer site is about to go &amp;#39;Live&amp;#39;.&lt;/p&gt;
&lt;p&gt;By default CRM installs with default timeout and ‘interval’ settings. However we have found that some of these settings may not be conducive to an overly efficient, optimized CRM install particularly where the install has been heavily customized. e.g. a Customer may have numerous customized notification rules, so their ‘Notification Interval’ will need to be modified. Another customer may have large amounts of Outlook Integration Users, they consequently should not have their ‘auto sync’ option set to ‘1 minute’ [that means that every end user may be trying to connect to the Web Server and synchronize every minute].&lt;/p&gt;
&lt;p&gt;So some of these need to be tweaked and fine-tuned across different sites depending on how the system is used and how it has been customized.&lt;/p&gt;
&lt;p&gt;Before an Implementer leaves a customer site, they should ensure the following hints/tips have been carried out.&lt;/p&gt;
&lt;p&gt;Development Partners can download the guide from here: &lt;a href="http://dpp.sagecrm.com/files/folders/additional_documentation/entry3322.aspx"&gt;Sage CRM 6.2 Quick Start Performance Guide&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3323" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/table+level+scripts/default.aspx">table level scripts</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Outlook+Integration/default.aspx">Outlook Integration</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Escalation+Rules/default.aspx">Escalation Rules</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Installation/default.aspx">Installation</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Performance/default.aspx">Performance</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/6.2/default.aspx">6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/indexer+service/default.aspx">indexer service</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/intervals/default.aspx">intervals</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/escalations/default.aspx">escalations</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/configuration/default.aspx">configuration</category></item><item><title>Changing the sort order of an SSA (Search Select Advanced) field</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/25/changing-the-sort-order-of-an-ssa-search-select-advanced-field.aspx</link><pubDate>Mon, 25 Jan 2010 15:34:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3320</guid><dc:creator>JackAllan</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;I was recently asked how&amp;nbsp;to change the view order of the drop down in a SSA field (Advanced Search Select/Search Select Advanced).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;The sorting is always on the view field for the SSA field in alphabetical order.&amp;nbsp; You cannot change that.&amp;nbsp; But you can change which field is used for the view field.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;How SSA fields behave is different for each entity.&amp;nbsp; There are four translations for each entity that tell CRM how to create SSA fields.&amp;nbsp; These translations all have a code that matches the name of entity and a Caption Family Type of ‘Tags’.&amp;nbsp; The family is different for each bit of information, here is what they mean:&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;ss_entities – this translation tells CRM that the entity is available for use in an SSA field.&amp;nbsp; Each of the translations should be set to the entity name&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;ss_searchtables – this translation tells CRM which table or view to use to get the information for the SSA field.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;ss_idfields – this translation tells CRM which field in the table/view defined in ss_searchtables to use as the value/id field for the SSA field.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;ss_viewfields – this translation tells CRM which field is used as the display field for the SSA&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;Note that the display field defined in the ss_viewfields translation is different from the view fields defined in the SSA field meta-data, the view fields in the meta data refer to which fields should be displayed in the drop down box.&amp;nbsp; The display field is what is shown in the SSA field when a value is selected.&amp;nbsp; For example on the Person entity this defaults to pers_fullname.&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;CRM always sorts the values in the SSA drop down by the ss_viewfield in ascending alphabetical order.&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;To see examples of how these translations are populated go to Administration -&amp;gt; Customisation -&amp;gt; Translations and search for a caption family of “ss_” and a Caption Code of “person”.&amp;nbsp; You will see the following:&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt; 
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/screenshots/personssa.PNG"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/screenshots/personssa.PNG" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;As an example of how you can use the above information to change the sort order of an SSA field drop down, I will show you how to change the Person SSA field to be sorted by last name instead of first name which is the system default.&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;First we need to create a new field in the vSearchListPerson that is in the format of “&amp;lt;&amp;lt;last name&amp;gt;&amp;gt;, &amp;lt;&amp;lt;first name&amp;gt;&amp;gt;”.&amp;nbsp; We will call this pers_fullname2.&amp;nbsp; We will create it on the existing vSearchListPerson view by adding in the following:&lt;/span&gt; 
&lt;blockquote&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;RTRIM(ISNULL(Pers_LastName, &amp;#39;&amp;#39;)) + &amp;#39;, &amp;#39; + RTRIM(ISNULL(Pers_FirstName, &amp;#39;&amp;#39;)) AS Pers_FullName2&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;Next we update the SS_ViewFields for the Person entity to have pers_fullname2 instead of pers_fullname.&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;Now we refresh the metadata.&amp;nbsp; &lt;/span&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;Now SSA fields will show people in the format of “&amp;lt;&amp;lt;lastname&amp;gt;&amp;gt;, &amp;lt;&amp;lt;firstname&amp;gt;&amp;gt;” and it will be sorted by this, so last name first.&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;FONT-SIZE:10pt;"&gt;Note: to complete this customization you probably would also want to change the view fields on the entity field’s meta data to use pers_fullname2 instead of pers_fullname so that the format is consistent between what is shown in the field and in the selection drop down.&lt;/span&gt; &lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3320" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Search+Select+Advanced/default.aspx">Search Select Advanced</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/customization/default.aspx">customization</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/JackAllan/default.aspx">JackAllan</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/ssa/default.aspx">ssa</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/advanced+search+select/default.aspx">advanced search select</category></item><item><title>Sage CRM 6.1 and Sage CRM 6.2 Language Packs</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/25/sage-crm-6-2-language-packs.aspx</link><pubDate>Mon, 25 Jan 2010 11:28:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3227</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR:#ffffff;" color="#ff0000"&gt;This article has been updated&amp;nbsp;25th January 2010 to include additional resources.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;For those of you working in different languages there are&amp;nbsp;3 language packs available to extend the translations for Sage CRM 6.1 and 6.2.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;6.1 Language pack for Turkish&amp;nbsp;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;6.2d Language pack for French, German and Spanish&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;6.2c Language pack for Dutch&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;These Language Packs can be installed on top of an existing CRM installation. The language pack populates the Sage CRM translation table (Custom_Captions) with the relevant language translations. &lt;/p&gt;
&lt;p&gt;The French, German and Spanish language pack is included in one package as the translations for these languages are updated regularly and in parallel. The installer allows the selection of which language you wish to install. &lt;/p&gt;
&lt;p&gt;The language packs can be downloaded by development partners from the resources section.&lt;/p&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/languagepacks/entry3317.aspx"&gt;6.1 Language pack for Turkish&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/languagepacks/entry3086.aspx"&gt;6.2d Language pack for French, German and Spanish&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://dpp.sagecrm.com/files/folders/languagepacks/entry3088.aspx"&gt;6.2c Language pack for Dutch&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;p&gt;The language packs will install onto any language CRM. It doesn’t check and it doesn’t matter what language version of CRM it installs onto. So a User of French CRM 6.2d could take the language pack and install German and Spanish captions for 6.2d. A Dutch user could take the English 6.2d and install the Dutch 6.2c language pack, and then further install 6.2d French, German or Spanish language pack. All the language pack does is populate the language column in the Custom_Captions with translations for that language.&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3227" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/custom+captions/default.aspx">custom captions</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/translations/default.aspx">translations</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.2/default.aspx">Sage CRM 6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/German/default.aspx">German</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/French/default.aspx">French</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Dutch/default.aspx">Dutch</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Spanish/default.aspx">Spanish</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Language+Pack/default.aspx">Language Pack</category></item><item><title>Dynamically change SearchSQL for an SSA field client-side</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/25/dynamically-change-searchsql-for-an-ssa-field-client-side.aspx</link><pubDate>Mon, 25 Jan 2010 09:44:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3316</guid><dc:creator>JackAllan</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Recently I was asked if it is possible to restrict a Search Select Advanced field based on criteria that may change client-side.&amp;nbsp; The answer was no, it&amp;#39;s not possible through standard customization.&amp;nbsp; However it&amp;#39;s not impossible...&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;I want to be very upfront about this blog post: it is about an &lt;strong&gt;&lt;u&gt;un-supported&lt;/u&gt;&lt;/strong&gt; technique for &lt;strong&gt;&lt;u&gt;hacking &lt;/u&gt;&lt;/strong&gt;functionality into CRM using client-side javascript.&amp;nbsp; Before using any of the techniques described in this post please read &lt;/font&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/25/jack-s-hack-faq.aspx"&gt;Jack’s Hack FAQ&lt;/a&gt;&lt;font color="#ff0000"&gt; to learn more about hacks and the risks involved in using them.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;There are two functions that get invoked client-side when a user interacts with an SSA field, they are: window.NavUrl&amp;lt;&amp;lt;fieldname&amp;gt;&amp;gt; and window.ShowPopupOptionsWindow&amp;lt;&amp;lt;fieldname&amp;gt;&amp;gt;.&amp;nbsp; As an excercise in learning, go to a CRM screen that has an SSA field and view the source and find these functions.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You will see that the SearchSQL is written in here.&amp;nbsp; It gets passed back to CRM when displaying the drop down list of values or when the user goes to the Find pop up screen.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;This means that we &lt;strong&gt;can&lt;/strong&gt; change the SearchSQL client side... It&amp;#39;s within our control.&amp;nbsp; The question is: how?&lt;/p&gt;
&lt;p&gt;What we need to do is to re-write the function, replacing the SearchSQL value with what we want it to be.&amp;nbsp; We can then: replace the existing function with the re-written function, and voila! the SearchSQL has been effectively changed.&amp;nbsp; (Note server-side the SearchSQL has not been altered in the meta-data)&lt;/p&gt;
&lt;p&gt;To do this we will be exploiting some very useful features of javascript:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;All functions are variables&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;All functions can be turned into their string representation using &lt;a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/toString"&gt;toString&lt;/a&gt;().&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;The &lt;a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/eval"&gt;eval&lt;/a&gt; method can be used to execute any string as if you had typed the javascript yourself.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;So, first things first, we need to get the function into a variable so we can mess with it.&amp;nbsp; We could just say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;var&amp;nbsp;s = window.NavUrlcase_primarypersonid.toString();&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;but we want to use this hack in multiple places and don&amp;#39;t want to have to re-write it for each scenario.&amp;nbsp; So it&amp;#39;d be nicer if we could load the fieldname into a variable and then use that to reference the function.&amp;nbsp; So instead we will use:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;var&amp;nbsp;s = window[&amp;#39;NavUrl&amp;#39; + strFieldname].toString();&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So now our&amp;nbsp;variable, s, has the following in it:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="BORDER-BOTTOM:#999999 1px dashed;BORDER-LEFT:#999999 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#eee;TEXT-INDENT:0px;PADDING-LEFT:5px;WIDTH:90%;PADDING-RIGHT:5px;FONT-FAMILY:Andale Mono, Lucida Console, Monaco, fixed, monospace;OVERFLOW:auto;BORDER-TOP:#999999 1px dashed;BORDER-RIGHT:#999999 1px dashed;PADDING-TOP:5px;"&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;function NavUrlcase_primarypersonid(ID,url,fieldname){&lt;br /&gt;var e=&amp;#39;&amp;#39;;if(ID){ if(document.EntryForm.case_primarypersonid.value == ID) { return false; } else e=&amp;#39;&amp;amp;ID=&amp;#39;+ID;}else{if(document.EntryForm.case_primarypersonid!=null &amp;amp;&amp;amp; document.EntryForm.case_primarypersonid.value!=&amp;#39;&amp;#39;){if(confirm(&amp;#39;The field is already matched. Do you want to clear the results?&amp;#39;)){Clearcase_primarypersonid();}return;}}var u=&amp;#39;/jCRM62/eware.dll/Do?SID=111476224537364&amp;amp;Act=1275&amp;amp;Mode=6&amp;amp;CLk=&amp;amp;Key0=4&amp;amp;Key4=1&amp;amp;Key27=40&amp;amp;ViewField=,Pers_FullName,Pers_PhoneFullNumber,&lt;br /&gt;&amp;amp;JumpReturnCol=case_primarypersonid&amp;amp;JumpIdField=Pers_PersonId&amp;amp;JumpNameField=Pers_FullName&amp;amp;SearchEntity=Person&lt;br /&gt;&amp;amp;SearchTable=vSearchListPerson&amp;amp;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;SearchSql=&lt;/font&gt;&amp;amp;searchsqld=&amp;amp;SsDef=20&amp;amp;LinkedField=&amp;amp;TiedField=case_primarypersonid&lt;br /&gt;&amp;amp;SearchText=&amp;#39;+encodeURIComponent(document.EntryForm.case_primarypersonidTEXT.value)+e;document.getElementById(&amp;#39;SEARCHFRAMEcase_primarypersonid&amp;#39;).src=u;&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Now all we need to do is replace the existing SearchSQL with our own.&amp;nbsp; Because the function is now a string this can be done very easily with &lt;a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp"&gt;regular expression&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;s = s.replace(/&amp;amp;SearchSql=[^&amp;amp;]*/i, &amp;#39;&amp;amp;SearchSql=&amp;#39; + escape(searchSQL));&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Note we&amp;nbsp;use the built in &lt;a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Predefined_Functions/escape_and_unescape_Functions"&gt;escape&lt;/a&gt; function to put the searchSQL into the correct format.&amp;nbsp;&amp;nbsp; This will handle all the appropriate delimiting for us.&lt;/p&gt;
&lt;p&gt;Next we need to replace the existing function with our new function.&amp;nbsp; To do this we will use the eval function to make javascript interpret our string as an actual function definition.&amp;nbsp; But first we need to strip out the function name, as when you assign a function to a variable it should be an &lt;a href="http://helephant.com/2008/08/javascript-anonymous-functions/"&gt;anonymous&lt;/a&gt; function. To strip the name out we use the replace method again:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;s = s.replace(&amp;#39;NavUrl&amp;#39; + strFieldname, &amp;#39;&amp;#39;);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;OK, so now we can use the eval statement like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;eval(&amp;#39;window[\&amp;#39;NavUrl\&amp;#39;+strFieldname]=&amp;#39; + s);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This is the equivalent to us typing out by hand the following:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="BORDER-BOTTOM:#999999 1px dashed;BORDER-LEFT:#999999 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#eee;TEXT-INDENT:0px;PADDING-LEFT:5px;WIDTH:90%;PADDING-RIGHT:5px;FONT-FAMILY:Andale Mono, Lucida Console, Monaco, fixed, monospace;OVERFLOW:auto;BORDER-TOP:#999999 1px dashed;BORDER-RIGHT:#999999 1px dashed;PADDING-TOP:5px;"&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;window.NavUrlcase_primarypersonid = function (ID,url,fieldname){&lt;br /&gt;var e=&amp;#39;&amp;#39;;if(ID){ if(document.EntryForm.case_primarypersonid.value == ID) { return false; } else e=&amp;#39;&amp;amp;ID=&amp;#39;+ID;}else{if(document.EntryForm.case_primarypersonid!=null &amp;amp;&amp;amp; document.EntryForm.case_primarypersonid.value!=&amp;#39;&amp;#39;){if(confirm(&amp;#39;The field is already matched. Do you want to clear the results?&amp;#39;)){Clearcase_primarypersonid();}return;}}var u=&amp;#39;/jCRM62/eware.dll/Do?SID=111476224537364&amp;amp;Act=1275&amp;amp;Mode=6&amp;amp;CLk=&amp;amp;Key0=4&amp;amp;Key4=1&amp;amp;Key27=40&amp;amp;ViewField=,Pers_FullName,Pers_PhoneFullNumber,&lt;br /&gt;&amp;amp;JumpReturnCol=case_primarypersonid&amp;amp;JumpIdField=Pers_PersonId&amp;amp;JumpNameField=Pers_FullName&amp;amp;SearchEntity=Person&lt;br /&gt;&amp;amp;SearchTable=vSearchListPerson&amp;amp;SearchSql=pers_lastname%20LIKE%20%27s%25%27&amp;amp;searchsqld=&amp;amp;SsDef=20&amp;amp;LinkedField=&amp;amp;TiedField=case_primarypersonid&lt;br /&gt;&amp;amp;SearchText=&amp;#39;+encodeURIComponent(document.EntryForm.case_primarypersonidTEXT.value)+e;document.getElementById(&amp;#39;SEARCHFRAMEcase_primarypersonid&amp;#39;).src=u;&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Now when the CRM UI goes to call the NavUrl function it will call ours, with the modified SearchSql, instead of the built-in one.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Using all the techniques described above we can create a re-usable function like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="BORDER-BOTTOM:#999999 1px dashed;BORDER-LEFT:#999999 1px dashed;PADDING-BOTTOM:5px;BACKGROUND-COLOR:#eee;TEXT-INDENT:0px;PADDING-LEFT:5px;WIDTH:90%;PADDING-RIGHT:5px;FONT-FAMILY:Andale Mono, Lucida Console, Monaco, fixed, monospace;OVERFLOW:auto;BORDER-TOP:#999999 1px dashed;BORDER-RIGHT:#999999 1px dashed;PADDING-TOP:5px;"&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;function SetSSASearchSQL(strFieldname, searchSQL) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!window[&amp;#39;NavUrl&amp;#39; + strFieldname]) return; // if the function does not exist we must not be in edit mode&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // replace SearchSql in the NavUrl function&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eval(&amp;#39;window[\&amp;#39;NavUrl\&amp;#39;+strFieldname]=&amp;#39; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + window[&amp;#39;NavUrl&amp;#39; + strFieldname].toString().replace(/&amp;amp;SearchSql=[^&amp;amp;]*/i, &amp;#39;&amp;amp;SearchSql=&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + escape(searchSQL)).replace(&amp;#39;NavUrl&amp;#39; + strFieldname, &amp;#39;&amp;#39;) + &amp;#39;;&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // replace SearchSql in the&amp;nbsp;ShowPopup function&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; eval(&amp;#39;window[\&amp;#39;ShowPopupOptionsWindow\&amp;#39;+strFieldname]=&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + window[&amp;#39;ShowPopupOptionsWindow&amp;#39; + strFieldname].toString().replace(/&amp;amp;SearchSql=[^&amp;amp;]*/i, &amp;#39;&amp;amp;SearchSql=&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + escape(searchSQL)).replace(&amp;#39;ShowPopupOptionsWindow&amp;#39; + strFieldname, &amp;#39;&amp;#39;) + &amp;#39;;&amp;#39;);&lt;br /&gt;}&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;We can then test this function using code like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;window.attachEvent(&amp;#39;onload&amp;#39;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSSASearchSQL(&amp;#39;case_primarypersonid&amp;#39;, &amp;quot;pers_lastname LIKE &amp;#39;s%&amp;#39;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So there you have it.&amp;nbsp; Using this technique you can dynamically change SearchSql client side on Search Select Advanced fields.&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3316" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/clientside/default.aspx">clientside</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Search+Select+Advanced/default.aspx">Search Select Advanced</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SearchSQL/default.aspx">SearchSQL</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/JackAllan/default.aspx">JackAllan</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/hack/default.aspx">hack</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/ssa/default.aspx">ssa</category></item><item><title>Jack's Hack FAQ</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/25/jack-s-hack-faq.aspx</link><pubDate>Mon, 25 Jan 2010 09:39:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3315</guid><dc:creator>JackAllan</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;strong&gt;hack&lt;/strong&gt; [hāk]&lt;/p&gt;
&lt;p&gt;-verb (used with object):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;To cut, notch, slice, chop, or sever (something.)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;To damage or injure by crude, harsh, or insensitive treatment; mutilate; mangle.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;-computing jargon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;A quick job that produces what is needed, but not well.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;To alter the intended function of a computer program to suit your needs in a skilful way.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;-Sage CRM Support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Completely unsupported method of enhancing the product that may break (itself or the core product) with upgrades.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What makes a hack a hack?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Basically when it relies on the product working in a particular undocumented way.&amp;nbsp; For example, client-side scripting can achieve many useful things by fiddling with the HTML in the browser, however, the way that the user interface is implemented in HTML by CRM is not documented and therefore is subject to change.&amp;nbsp; SageCRM reserves the right to change the internal workings of the product at any-time to improve the product; and we do this all the time!&amp;nbsp; So whenever you create a customization that relies upon an undocumented working of the product you are introducing a risk of that customization breaking (either itself or the whole product) with upgrades.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When to use a hack?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Officially?&amp;nbsp; Never!&amp;nbsp; Always use the supported UI &amp;amp; API methods of customizing CRM.&amp;nbsp; This is so you can guarantee that your customization will continue to work with patches and upgrades with minimal rework &amp;amp; testing required.&amp;nbsp; Also you have Sage&amp;#39;s help &amp;amp; support in fixing problems should they arise upon patching or upgrading.&amp;nbsp; SageCRM only supports the latest patch level on the last three major releases of the product, so if a customer is tied to an old patch because of the regression testing required for upgrading your unsupported customization they have effectively lost their support from Sage; and this is not good for anyone involved!&lt;br /&gt;Note: CRM patches are released quarterly with major versions approximately once per year.&amp;nbsp; Sage does not support customizations; they support the ability to make customizations and the API’s.&amp;nbsp; The Sage CRM Level 3 Support team will not troubleshoot custom code in a support case, that is a chargeable service.&amp;nbsp; Consult your local PSG team for help with your customizations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If it’s not supported why do you blog about hacks?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes a client-side feature, that is not available in the core product, could be very useful to a customer.&amp;nbsp; Sometimes the cost of testing, and possibly re-writing, a hack at each patch/upgrade is less than the benefit of the customization to the customer.&amp;nbsp; Often such features are a convenience to the end user and it does not matter a great deal if the feature is removed entirely if it breaks.&lt;br /&gt;From my experience from working in the CRM Support team I know that people hack CRM all the time, rather than discourage it entirely I’d like to educate people to the risks involved and hopefully show, by way of example, low risk approaches to non standard customizations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Guidelines&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Always attempt to use the APIs and customization features available in the core product first.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Never rely on a client-side hack to enforce any kind of business logic or security.&amp;nbsp; (This should be done in server-side scripts: create/validate &amp;amp; table level scripts.)&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;If your hack adds critical functionality to the product seek advice in the form of a customization review from your local PSG teams so they can give you an assessment of the risks you are introducing.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;If you are using your hack all over the place it may make a great feature for the core product and we’d love to know about your idea.&amp;nbsp;&amp;nbsp; Please log an enhancement request through your support channels and the feature may very well end up in the next version of CRM!&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3315" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/clientside/default.aspx">clientside</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/customization/default.aspx">customization</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/JackAllan/default.aspx">JackAllan</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/unsupported/default.aspx">unsupported</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/support/default.aspx">support</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/hack/default.aspx">hack</category></item><item><title>Installing Self Service</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/21/installing-self-service.aspx</link><pubDate>Thu, 21 Jan 2010 09:52:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3305</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Below is a simple diagram showing the architecture of Sage CRM&amp;#39;s self service module.&amp;nbsp; You can see that this clearly implies that the Self Service site exists beyond the corporate firewall.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/selfservice.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/selfservice.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For a company that is using Sage CRM, how do they go about enabling the Self Service feature on the external site? &lt;/p&gt;
&lt;p&gt;A typically starting point might be one Server on the LAN with&amp;nbsp;a Sage CRM installation. The same server&amp;nbsp;maybe used for the database e.g. MS SQL 2005 and any ERP Software with integration.&lt;/p&gt;
&lt;p&gt;How can we install the Self Service component on new Server to be placed beyond the firewall? The important thing to realise is that Self Service does not has a separate install.&amp;nbsp; You can only install and register the eWare.SelfService object by installing a copy CRM which has Self Service enabled.&amp;nbsp; This means that on the machine you want to use for Self Service you will need to install a copy of Sage CRM with a license that includes Self Service.&lt;/p&gt;
&lt;p&gt;You then need to change the settings so that &amp;#39;new&amp;#39; install points to the correct database within the network.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/selfserviceconfig.png"&gt;&lt;img border="0" src="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/selfserviceconfig.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3305" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Self+Service/default.aspx">Self Service</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Installation/default.aspx">Installation</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.2/default.aspx">Sage CRM 6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/System+Administration/default.aspx">System Administration</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+7.0/default.aspx">Sage CRM 7.0</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/configuration/default.aspx">configuration</category></item><item><title>Innovation in business - making CRM work even better</title><link>http://dpp.sagecrm.com/blogs/talking_about_customers/archive/2010/01/20/innovation-in-business-making-crm-work-even-better.aspx</link><pubDate>Wed, 20 Jan 2010 09:47:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3298</guid><dc:creator>David Beard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;br /&gt;Since I last wrote, the idea of creativity in business has been swirling around in my mind.&lt;/p&gt;
&lt;p&gt;The current economic conditions are driving our customers to think more about&amp;nbsp;WHAT they sell - what are the top products, what else could we sell to existing customers, etc.&amp;nbsp;Trouble is, that thinking really only operates from an internal perspective.&amp;nbsp; It&amp;#39;s much better to ask why &lt;u&gt;customers&lt;/u&gt; buy, how &amp;amp; where they do this, what are their expectations of the service wraparound, etc.&amp;nbsp;&amp;nbsp; In essence, you need to think creatively, albeit &lt;a class="" title="Link to Kevin Coyne&amp;#39;s book on Amazon" href="http://www.amazon.com/Breakthrough-Thinking-Inside-Kevin-Coyne/dp/B000ZSGW5Y" target="_blank"&gt;Inside the Box&lt;/a&gt; of your chosen business environment.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Isn&amp;#39;t this obvious ?&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Now I know this sounds a bit like a &amp;quot;Business 101&amp;quot; lesson.&amp;nbsp; Focus on your customers and all that.&amp;nbsp;&amp;nbsp; However, I still think the day-to-day reality is very different.&amp;nbsp; In the last week I have talked to a number of prospects who, when asked to think about WHY they want to a process to work a certain way, said &amp;quot;&lt;em&gt;it&amp;#39;s what we do here&lt;/em&gt;&amp;quot;.&amp;nbsp; Their only frame of reference was an internal one - the customer experience was almost entirely missing.&amp;nbsp;&amp;nbsp; Indeed, one business had even gone as far to drawing up how they wanted their CRM screens to look - with almost no&amp;nbsp; reference to the raison d&amp;#39;etre for having the system in the first place.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Not seeing the wood for the trees, as someone famous once said.&amp;nbsp;&amp;nbsp; Or, as Ben Goldacre, author of &lt;a class="" title="Link to Ben Goldacre&amp;#39;s website" href="http://www.badscience.net/" target="_blank"&gt;Bad Science&lt;/a&gt; notes in his book: &amp;quot;It&amp;#39;s more complicated than that&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;So, why does this happen ?&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;I was listening to &lt;a class="" title="Link to Ackoff Centre" href="http://ackoffcenter.blogs.com/" target="_blank"&gt;Russell Ackoff&lt;/a&gt; talking on Radio 4&amp;#39;s &lt;a class="" title="Link to Radio 4&amp;#39;s In Business programme synopsis" href="http://www.bbc.co.uk/programmes/b00pr72d#synopsis" target="_blank"&gt;In Business&lt;/a&gt; a few weeks back - the programme was replaying an earlier interview.&amp;nbsp; I was struck by his comment along the lines of &amp;quot;&lt;em&gt;most managers don&amp;#39;t have the knowledge and understanding required to deal with complexity ... they tend to look for simple solutions to problems&lt;/em&gt;.&amp;quot;&amp;nbsp; I think he is right.&amp;nbsp; Innovation is hard work, especially if your role in a business is to execute &amp;amp; monitor a strategy.&amp;nbsp; So effecting a simple solution that appears to deliver results will often suffice.&amp;nbsp; That is until the results dry up and/or the strategy does not match up to the operating complexity of the real world.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;So, what&amp;#39;s the answer ?&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Ackoff advocates a concept of &lt;a class="" title="Link to Ackoff&amp;#39;s Book F-Laws" href="http://www.f-laws.com/content/little_book_f-laws.php" target="_blank"&gt;synthetic thinking&lt;/a&gt; - which is thinking about &amp;amp; designing systems that derive behaviour of the parts from the functions required of the whole.&amp;nbsp;&amp;nbsp; At its most basic, that means thinking about your customer&amp;#39;s journey through your entire business &amp;amp; aiming for a joined-up approach.&amp;nbsp; This, I believe, is inextricably linked to my &lt;a class="" title="My previous blog on employee engagement" href="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/2009/09/01/managing-employee-engagement-amp-crm-strategies-it-s-easier-than-you-think.aspx" target="_blank"&gt;previous thoughts&lt;/a&gt; on employee engagement.&amp;nbsp; In a knowledge-based econony, your most valuable capital is tied up in employee&amp;#39;s heads.&amp;nbsp; They probably have the answers to the intricate details of various stages of the customer journey - joining up these answers will shed light on the complex systems within a business.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;That should allow you to drive innovation from within, delivering a clearer view of the world in which your business operates &amp;amp; how best to focus your efforts.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3298" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/Sage+CRM/default.aspx">Sage CRM</category><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/crm/default.aspx">crm</category><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/creativity/default.aspx">creativity</category><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/in+business/default.aspx">in business</category><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/ackoff/default.aspx">ackoff</category><category domain="http://dpp.sagecrm.com/blogs/talking_about_customers/archive/tags/radio4/default.aspx">radio4</category></item><item><title>Creating a Dynamic Group in Sage CRM 6.2 using the COM object TargetLists</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/20/creating-a-dynamic-group-in-sage-crm-6-2-using-the-com-object-targetlists.aspx</link><pubDate>Wed, 20 Jan 2010 09:08:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3294</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The COM API has an old object within it called TargetLists.&amp;nbsp; This object can be used within internal script (Validate, Table Level Script etc) to create both Dynamic and Static Groups.&amp;nbsp; Prior to version 6.0 of Sage CRM Groups use to be called TargetLists.&amp;nbsp; The name TargetList is stilled used within the API for backwards compatibility. &lt;/p&gt;
&lt;p&gt;Below is a simple example of the object being used in an ASP page to create a Dynamic Group.&amp;nbsp;&amp;nbsp; You will see that I had to &amp;#39;tweak&amp;#39; the code to make sure the created group was completely defined.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;You can read about the TargetList object in the &lt;a href="http://dpp.sagecrm.com/developerhelp/Default_CSH.htm#ASP%20Object%20Reference/CRMTargetListsObject/Description/CRMtargetlistsObject.htm"&gt;online documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have marked the code in sections.&amp;nbsp; Please see the notes at the end of this article.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Code&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font face="courier new,courier"&gt;&amp;lt;!-- #include file =&amp;quot;accpaccrm.js&amp;quot;--&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;//section 1&lt;br /&gt;TargetBlock = CRM.TargetLists;&lt;br /&gt;TargetBlock.TargetListID = 0;&lt;br /&gt;TargetBlock.Category = &amp;quot;Person&amp;quot;;&lt;br /&gt;TargetBlock.Name = &amp;quot;Jeff List 9&amp;quot;;&lt;br /&gt;TargetBlock.Description = &amp;quot;Jeff List Description 9&amp;quot;;&lt;br /&gt;TargetBlock.ViewName = &amp;quot;vTargetListPerson&amp;quot;;&lt;br /&gt;TargetBlock.WhereClause = &amp;quot;Addr_City = N&amp;#39;London&amp;#39;&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 2&lt;br /&gt;TargetField = TargetBlock.Fields.New();&lt;br /&gt;TargetField.DataField = &amp;quot;Comp_Name&amp;quot;;&lt;br /&gt;TargetField = TargetBlock.Fields.New();&lt;br /&gt;TargetField.DataField = &amp;quot;Pers_LastName&amp;quot;;&lt;br /&gt;TargetField = TargetBlock.Fields.New();&lt;br /&gt;TargetField.DataField = &amp;quot;Pers_FirstName&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 3&lt;br /&gt;TargetField = TargetBlock.OrderByFields.New();&lt;br /&gt;TargetField.DataField = &amp;quot;Pers_LastName&amp;quot;;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 4&lt;br /&gt;TargetQuery = TargetBlock.Retrieve();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 5&lt;br /&gt;TargetBlock.Save();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 6&lt;br /&gt;var TargetListRecord = CRM.FindRecord(&amp;quot;custom_reports&amp;quot;,&amp;quot;repo_reportid=&amp;quot;+TargetBlock.TargetListID);&lt;br /&gt;TargetListRecord.repo_reportstyle = &amp;#39;GroupTypeDynamic&amp;#39;;&lt;br /&gt;TargetListRecord.repo_printoptions = 1;&lt;br /&gt;TargetListRecord.repo_privateuserid = 0;&lt;br /&gt;TargetListRecord.SaveChanges();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;//section 7&lt;br /&gt;Response.Redirect(CRM.URL(580));&lt;br /&gt;%&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 1&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The TargetListID is set to zero to indicate a new target list is to be created.&lt;br /&gt;The category is set. Other valid categories for Dynamic Groups would be the standard Categories used in Sage CRM 6.2 e.g. Cases,&amp;nbsp; Company, Lead, Opportunity, Order, Person and Quote.&lt;br /&gt;The name of the target list should be unique.&lt;br /&gt;The view used and the whereclause needed is set.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 2&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At least one display field has to be specified and all fields must be returned by the view referenced in section 1.&lt;br /&gt;You need to create a display field and specify its database fieldname.&amp;nbsp; This is repeated for each other optional field needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 3&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Order by fields to sort the target list can be added.&amp;nbsp; You need to create a new order by field and specify its database fieldname.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 4&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The SQL query that underlies the Group (defined as the view and whereclause) needs to be invoked to allow the Group to be saved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 5&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Group can then be saved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 6&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I found the code for the TargetList object needed to &amp;#39;tweaked&amp;#39; to get it to work fully for Dynamic Groups.&amp;nbsp; The newly created Group had to be updated.&amp;nbsp; The Group definition is held in the Custom_reports table.&amp;nbsp; As useful background article is &amp;quot;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2008/03/18/reports-saved-searches-and-groups.aspx"&gt;Reports, Saved Searches and Groups&lt;/a&gt;&amp;quot;. &lt;/p&gt;
&lt;p&gt;The report style (repo_reportstyle) has to be set and the valid values for Groups are &amp;#39;GroupTypeDynamic&amp;#39; or &amp;#39;GroupTypeStatic&amp;#39;.&lt;/p&gt;
&lt;p&gt;The field repo_printoptions needs to be set to equal 1 for both Static and Dynamic Groups (Target Lists).&amp;nbsp; This has been discussed previously in the article &amp;quot;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2009/03/16/custom-reports-settings-and-summary-reports.aspx"&gt;custom_reports settings and Summary Reports&lt;/a&gt;&amp;quot;. &lt;/p&gt;
&lt;p&gt;The field repo_privateuserid has to be set to 0 to all all users to see the newly created Group.&amp;nbsp; Please see the article &amp;quot;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2008/01/23/making-a-private-group-target-list-public.aspx"&gt;Making a Private Group (Target List) Public&lt;/a&gt;&amp;quot; for more details.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The changes to the custom_reports record then need to be saved in the database.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Section 7&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The screen is then redirected to the Group listing and should show the newly created dynamic group listed with the other groups.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3294" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/ASP/default.aspx">ASP</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/COM/default.aspx">COM</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SQL/default.aspx">SQL</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Groups/default.aspx">Groups</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Target+Lists/default.aspx">Target Lists</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Coding/default.aspx">Coding</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.2/default.aspx">Sage CRM 6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/6.2/default.aspx">6.2</category></item><item><title>Setting Territory to User's Default</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/18/setting-territory-to-user-s-default.aspx</link><pubDate>Mon, 18 Jan 2010 23:33:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3292</guid><dc:creator>Wing Kwong</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;When you are within a company and create a communication, the territory is defaulted to the company&amp;#39;s, not the user&amp;#39;s.&amp;nbsp; If you want to default the territory to the user&amp;#39;s, you can use the following script under &amp;quot;Custom Content&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;lt;script&amp;gt;&amp;nbsp;&lt;br /&gt;window.attachEvent(&amp;quot;onload&amp;quot;,setTerritory);&lt;/p&gt;
&lt;p&gt;function setTerritory(){&lt;br /&gt;if(document.EntryForm){&lt;br /&gt;&amp;nbsp; if (document.EntryForm.comm_note.value==&amp;quot;&amp;quot;){&amp;nbsp;&amp;nbsp; // using this to detect whether it&amp;#39;s editing or a new entry. You can use other&amp;nbsp;field, or possiblity Action ID&amp;#39;s.&lt;br /&gt;&amp;nbsp; oSelectOne = document.EntryForm.elements[&amp;quot;comm_secterr&amp;quot;];&lt;br /&gt;&amp;nbsp; for (i=0; i&amp;lt;oSelectOne.length; i++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(oSelectOne.options[i].value==CurrentUser.user_primaryterritory){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oSelectOne.selectedIndex=i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; // end if&lt;br /&gt;&amp;nbsp; } // end for&lt;br /&gt;&amp;nbsp; }// end if&lt;br /&gt;}// end if&lt;br /&gt;}// end function&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3292" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/setting+selection+list+default+territory/default.aspx">setting selection list default territory</category></item><item><title>Grabbing Accpac fields into CRM</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/18/grabbing-accpac-fields-into-crm.aspx</link><pubDate>Mon, 18 Jan 2010 23:24:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3291</guid><dc:creator>Wing Kwong</dc:creator><slash:comments>0</slash:comments><description>If you want to get Accpac data, here&amp;#39;s a quick way to do it:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;1) Create &amp;nbsp;a view that associates the CRM company with the Accpac company first: e.g.:&lt;/span&gt;&lt;span&gt;&amp;nbsp;CREATE VIEW vMyAccpac &amp;nbsp;AS SELECT * FROM Server.dbo.ARCUS inner join company ON&amp;nbsp; comp_idcust=Server.dbo.ARCUS.IDCUST&lt;br /&gt;&lt;br /&gt;2) Now as a demostration,&amp;nbsp;let&amp;#39;s pull up the CompanyBoxLong screen, and under any field, insert the following into the &amp;quot;CreateScript&amp;quot; area:&lt;span&gt;&lt;/span&gt;&lt;span&gt; 
&lt;p&gt;var ThisCustomer; var CompRec; var AccpacID; &lt;br /&gt;ThisCustomer = eWare.GetContextInfo(&amp;#39;Company&amp;#39;,&amp;#39;Comp_CompanyId&amp;#39;);&lt;br /&gt;&lt;br /&gt;//Get Customer ID&lt;br /&gt;if (typeof(Values(&amp;#39;Comp_IdCust&amp;#39;)) != &amp;#39;undefined&amp;#39; ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; CompRec = eWare.FindRecord(&amp;quot;Company&amp;quot;,&amp;quot;Comp_CompanyId=&amp;quot;+ThisCustomer);&lt;br /&gt;//Get Customer record from Accpac&lt;br /&gt;&amp;nbsp;&amp;nbsp; sql = &amp;quot;SELECT * FROM vMyAccpac WHERE Comp_IdCust=&amp;#39;&amp;quot; +&amp;nbsp;CompRec.Comp_IdCust + &amp;quot;&amp;#39;&amp;quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strQuery = eWare.CreateQueryObj(sql);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; strQuery.SelectSql();&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Caption = strQuery.FieldValue(&amp;#39;NAMECTAC&amp;#39;);&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As an example, this will change the caption to the Accpac field value from &amp;#39;NAMECTAC&amp;#39; for the existing Company record (it must be integrated with Accpac of course).&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3291" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Accpac+fields/default.aspx">Accpac fields</category></item><item><title>Hiding certain System screens</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/18/hiding-certain-system-screens.aspx</link><pubDate>Mon, 18 Jan 2010 23:04:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3290</guid><dc:creator>Wing Kwong</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This can be done through scripts like this through &amp;quot;Custom Content&amp;quot;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;font size="2"&gt;var t=document.all;&lt;br /&gt;&lt;/font&gt;&amp;nbsp;for(var i=0;i&amp;lt;t.length;i++)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; if(t[i].tagName==&amp;quot;TABLE&amp;quot;) &lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(t[i].innerText.substring(0,8)==&amp;quot;Opportunity Total&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t[i].style.visibility=&amp;#39;hidden&amp;#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;This will hide the Opportunity Total Screen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;However, be careful because certain screens contain fields that are necessary in order for the entire entity to work properly.&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3290" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Hide+System+Screen/default.aspx">Hide System Screen</category></item><item><title>Escalation Rule that runs only during normal business hours</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/18/escalation-rule-that-runs-only-during-normal-business-hours.aspx</link><pubDate>Mon, 18 Jan 2010 22:58:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3289</guid><dc:creator>Wing Kwong</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you want your escalation rule to run only during certain period of time, you can add the following to your existing SQL clause:&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;(... existing SQL triggering clause) AND datepart(hour, current_timestamp)&amp;lt;&amp;#39;18&amp;#39;&lt;br /&gt;AND datepart(hour, current_timestamp)&amp;gt;&amp;#39;7&amp;#39;&lt;br /&gt;AND DATENAME(WEEKDAY, GETDATE()) &amp;lt;&amp;gt; &amp;#39;Saturday&amp;#39;&lt;br /&gt;AND DATENAME(WEEKDAY, GETDATE()) &amp;lt;&amp;gt; &amp;#39;Sunday&amp;#39;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;In this example, it will not&amp;nbsp;get triggered&amp;nbsp;after 6pm or before 7am, and it will not run on weekends.&lt;br /&gt;&lt;br /&gt;Also, if you want to notify a user if, say, a record hasn&amp;#39;t been updated for 14 days while being stuck at a certain stage, you can use this SQL clause:&lt;/p&gt;&amp;nbsp;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;DATEDIFF(day,case_updateddate, getdate())&amp;gt;14 AND (case_stage=&amp;lt;1&amp;gt; OR case_stage=&amp;lt;2&amp;gt;) AND case_assigneduserid=#U&lt;span style="FONT-SIZE:12pt;FONT-FAMILY:&amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3289" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Notifications/default.aspx">Notifications</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/intervals/default.aspx">intervals</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/escalations/default.aspx">escalations</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/time+period/default.aspx">time period</category></item><item><title>Handling the Data in Multi Select fields in Validate Rules and Table Level Scripts</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/15/handling-the-data-in-multi-select-fields-in-validate-rules-and-table-level-scripts.aspx</link><pubDate>Fri, 15 Jan 2010 15:14:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3284</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This has been written using Sage CRM 6.2d and will look at the behaviour of the Values collection.&amp;nbsp; For a more complete discussion see the article The &lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2009/03/13/the-values-collection.aspx"&gt;Values() Collection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Imagine a new field called pers_type has been added to the person table and included to the screen personboxlong. The field pers_type is a multiselect and can contain the following values: &lt;em&gt;User, Influencer, Gatekeeper, BudgetHolder, Advocate, DecisionMaker&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;How can the return values be seen in either a Validate rule or a Table Level script?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Validate Rules and Multi Select&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Validate rule needs to be added to a field within the personboxlong screen.&amp;nbsp; There are two collections that can be used to obtain the submitted values of a field.&amp;nbsp; These are Values() and FormValues().&amp;nbsp; I used three scenarios to illustrate the data returned.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;The user selected only the data value &amp;#39;Influencer&amp;#39; before submitting.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;The user selected the data values &amp;#39;Influencer&amp;#39; and &amp;#39;Gatekeeper&amp;#39; before submitting.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;The user selected all possible values before submitting.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using Values()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The code below is a simple test to show the string returned&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;Valid = false;&lt;br /&gt;ErrorStr = Values(&amp;quot;pers_type&amp;quot;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Results for Values() in Validate Script&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using FormValues()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The code below is a simple test to show the string returned&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;Valid = false;&lt;br /&gt;ErrorStr = FormValues(&amp;quot;pers_type&amp;quot;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Results for FormValues() in Validate Script&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer,GateKeeper&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;User,Influencer,Gatekeeper,BudgetHolder,Advocate,DecisionMaker&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note:&amp;nbsp; &lt;/strong&gt;To allow you to return a comma delimited list of values submitted from a screen within a Validate rule, you must use FormValues().&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Table Level Scripts and Multi Select&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Validate rule within the screen was removed and an UpdateRecord event function within a table level script defined against the person table was then tested.&lt;/p&gt;
&lt;p&gt;The same test scenarios as above were used.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using Values()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The code below is a simple test to show the string returned&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;function UpdateRecord()&lt;br /&gt;{&lt;br /&gt;Valid = false;&lt;br /&gt;ErrorStr = Values(&amp;quot;pers_type&amp;quot;);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Results for Values() in Table Level Script&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;,Influencer,&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;,Influencer,Gatekeeper,&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;,User,Influencer,Gatekeeper,BudgetHolder,Advocate,DecisionMaker,&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: There is a comma prefix and suffix added to the returned string.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using FormValues()&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The code below is a simple test to show the string returned&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new,courier"&gt;function UpdateRecord()&lt;br /&gt;{&lt;br /&gt;Valid = false;&lt;br /&gt;ErrorStr = FormValues(&amp;quot;pers_type&amp;quot;);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Results for FormValues() in Table Level Script&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;Influencer,GateKeeper&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;quot;User,Influencer,Gatekeeper,BudgetHolder,Advocate,DecisionMaker&amp;quot; returned on screen.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: There is NO comma prefix and suffix added to the returned string.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp; To allow you to return a comma delimited list of values submitted from a screen within a Table Level Script, you should use FormValues() as it provides an easier to parse result.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3284" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/table+level+scripts/default.aspx">table level scripts</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Code+Snippets/default.aspx">Code Snippets</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Values_28002900_+Collection/default.aspx">Values() Collection</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/validate+script/default.aspx">validate script</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/FormValues_28002900_+Collection/default.aspx">FormValues() Collection</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Multi+Select/default.aspx">Multi Select</category></item><item><title>The Journal Table</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/15/the-journal-table.aspx</link><pubDate>Fri, 15 Jan 2010 12:26:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3282</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I was tempted to start a new series of articles called &amp;quot;&lt;em&gt;Mysterious Tables of Sage CRM&lt;/em&gt;&amp;quot; but since this is supposed to be a sensible library of &amp;quot;Hints, Tips and Tricks&amp;quot; I have resisted. Nevertheless there are a few tables in the Sage CRM database that whose purpose maybe obscure to you.&amp;nbsp; Generally Sage CRM&amp;#39;s database could not be simpler; the table that stores the company information is called &amp;quot;company&amp;quot;, the table that stores address information is called &amp;quot;address&amp;quot; and so on. &lt;/p&gt;
&lt;p&gt;But there are a few tables that may leave you scratching your head, especially when there seems to be SQL activity associated with them during insert, update or delete of other records.&amp;nbsp; The Journal table is one of these database structures that is maintained as data manipulation is carried out on tables linked to the Person and Company entities.&lt;/p&gt;
&lt;p&gt;This article was prompted by a colleague who noticed that the journal table was written to during the merging of two person records. The journal table is only relevant to Sage CRM systems that are integrated with other Sage ERP systems using a particular integration mechanism.&amp;nbsp; Sage CRM offers the ability to handle integrations with other software in a wide variety of ways.&amp;nbsp; An article I wrote so time ago called &amp;quot;&lt;a href="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2008/03/30/integration-with-external-systems-and-the-synchronization-of-application-data.aspx"&gt;Integration with External Systems and the Synchronization of Application Data&lt;/a&gt;&amp;quot; discusses the range of techniques available to a developer.&lt;/p&gt;
&lt;p&gt;Certain Sage ERP systems are integrated with Sage CRM using a SOAP based web services contract.&amp;nbsp; This is not an open API but is very similar to the general SOAP web service interface that has been discussed lots of times on this site.&lt;/p&gt;
&lt;p&gt;The Journal table is used to keep track of Create Update Delete activity on company, person, address and phone tables etc which is the information needed by the synch engine to make sure that the CRM data changes are posted to the ERP system.&lt;/p&gt;
&lt;p&gt;If you monitor the SQL log you will notice the Journal table is written into when a person or a company is added or changed via the main user interface, the web service interface or the COM and .NET api objects.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:&amp;nbsp; Direct manipulation of data using SQL would not update the jounal table and so in those systems which use the SOAP contract this may be an issue.&lt;/p&gt;
&lt;p&gt;The Journal Table was introduced in Sage CRM 6.1 which is when the SOAP contract was first started to be used by Sage ERP development teams.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;To the best of my knowledge the following is true.&amp;nbsp; The Extended Enterprise Integration with Sage MAS 90 and Sage MAS 200 does not use the journal table, neither does the Sage Accpac ERP integration.&lt;/p&gt;
&lt;p&gt;The following is a list of some of the different Sage ERP products which in their Integration with Sage CRM make use of the journal table. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://www.sage.fr/pme/logiciels-de-gestion/gestion-de-la-relation-clients"&gt;Sage 100&lt;/a&gt; (France)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://www.sage.co.uk/software_and_services/customers/sage_200_crm.aspx"&gt;Sage 200&lt;/a&gt; (UK)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://www.sage.de/upload/download/smb/produkte/sage_crm/CRM-Integration_Office%20Line.pdf"&gt;Sage Office Line &lt;/a&gt;(Germany)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://www.sage.de/upload/download/smb/produkte/sage_crm/CRM-Integration_Classic%20Line.pdf"&gt;Sage Classic Line&lt;/a&gt; (Germany)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;a href="http://www.sage.de/baeurer/produkte/crm/crm_erp_systeme.asp"&gt;Sage Bäurer&lt;/a&gt; (Germany) &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3282" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SQL/default.aspx">SQL</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Integration+Options/default.aspx">Integration Options</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.1/default.aspx">Sage CRM 6.1</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+6.2/default.aspx">Sage CRM 6.2</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+100/default.aspx">Sage 100</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+Accpac/default.aspx">Sage Accpac</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+MAS/default.aspx">Sage MAS</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/ERP/default.aspx">ERP</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+Office+Line/default.aspx">Sage Office Line</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+Classic+Line/default.aspx">Sage Classic Line</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Journal/default.aspx">Journal</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+B_26002300_228_3B00_urer/default.aspx">Sage B&amp;#228;urer</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/SOAP/default.aspx">SOAP</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+200/default.aspx">Sage 200</category></item><item><title>Beta: Testing Progress</title><link>http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/2010/01/11/beta-testing-progress.aspx</link><pubDate>Mon, 11 Jan 2010 16:21:00 GMT</pubDate><guid isPermaLink="false">94c6599b-6b03-4097-ac1a-0c4ca7ff1508:3264</guid><dc:creator>Jeff Richards</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I&amp;#39;d like to say a big thank you for all the feedback that we&amp;#39;ve had during the DPP phase of the Sage CRM v7 programme.&amp;nbsp; I know that some partners have made great progress in their testing. But this phase of the beta ends on &lt;b&gt;21st January&lt;/b&gt; and if you are a development partner who has not yet started testing then you need to get your skates on!&amp;nbsp; All Development Partners need to think about how to handle questions from customers about their customizations.&lt;/p&gt;
&lt;p&gt;Please use the deep dive notes and the DPP blog as resources to help you .&amp;nbsp; Development Partners can download these from the resources section.&amp;nbsp; Here are some things to think about during your testing:&lt;/p&gt;
&lt;p&gt;Have you tested..&lt;br /&gt;…the ASP pages in your existing customizations continue to work as expected?&lt;br /&gt;…any customizations that involve direct updating or insertion into meta data?&lt;br /&gt;…that your components built in 6.2 load correctly in 7.0?&lt;br /&gt;…that your .NET application extensions will work in 7.0?&lt;br /&gt;…all images in ASP pages display correctly?&lt;br /&gt;…customized help buttons still work?&lt;br /&gt;…custom lists still work, called either using runblock or in an ASP page?&lt;br /&gt;…all your custom reports and groups still work?&lt;br /&gt;…components that create Button Groups on summary screens correctly appear?&lt;br /&gt;…your Advanced Finds still work correctly?&lt;br /&gt;…applications using webservices still fully work?&lt;br /&gt;&lt;/p&gt;&lt;img src="http://dpp.sagecrm.com/aggbug.aspx?PostID=3264" width="1" height="1"&gt;</description><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/Sage+CRM+7.0/default.aspx">Sage CRM 7.0</category><category domain="http://dpp.sagecrm.com/blogs/hints_tips_and_tricks/archive/tags/beta/default.aspx">beta</category></item></channel></rss>