<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://customerfx.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>Kris Halsrud&amp;#39;s Blog</title><link>http://customerfx.com/pages/integrationblog/default.aspx</link><description>Kris Halsrud on development and Integration with CRM and Development</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Editing tables in SQL 2008</title><link>http://customerfx.com/pages/integrationblog/2010/03/16/editing-tables-in-sql-2008.aspx</link><pubDate>Tue, 16 Mar 2010 10:58:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41560</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41560</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/03/16/editing-tables-in-sql-2008.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I recently ran into an issue when trying to edit a SalesLogix table in the SQL Management Studio 2008.&amp;nbsp; I was trying to increase the length of a field while in a table’s design mode.&amp;nbsp; When I went to save my change I received this error:&lt;/p&gt;   &lt;i&gt;Saving changes is not permitted.&amp;nbsp; The changes you have made require the following tables to be dropped and re-created.&amp;nbsp; You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.&lt;/i&gt;  &lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/TableSaveError_40E1C658.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/TableSaveError_thumb_52BE5A25.png" style="border:0px none;display:inline;" title="Table Save Error" alt="Table Save Error" width="606" border="0" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now I have done this countless times in the past and wasnt sure what was going on but the last part of the error message pointed me in the direction I needed.&amp;nbsp; Turns out that a default option for the SQL 2008 management console prevents edits to tables like I wanted.&amp;nbsp; After a little digging I found where to turn this off.&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In the Management Console, click the Tools drop down menu, then Options.&lt;/p&gt;      &lt;p&gt;This will open a dialog.&amp;nbsp; Expand out the Designers node in the left side tree, then click the Table and Database Designers.&amp;nbsp; That will show options to the right.&amp;nbsp; Clear the checkbox “Prevent saving changes that require table re-creation”.&lt;/p&gt;      &lt;p&gt;&amp;nbsp;&lt;img src="http://customerfx.com/blogs/integrationblog/TableChnagePoroperty._thumb_40759363.png" style="border:0px none;display:inline;" title="Table Chnage Poroperty." alt="Table Chnage Poroperty." width="644" border="0" height="379" /&gt;&lt;/p&gt;&amp;nbsp;&lt;p&gt;Click OK and that is it!&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41560" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix/default.aspx">SalesLogix</category></item><item><title>Adding an assembly reference to code files in the SalesLogix Application Architect</title><link>http://customerfx.com/pages/integrationblog/2010/03/15/adding-an-assembly-reference-to-code-files-in-the-saleslogix-application-architect.aspx</link><pubDate>Mon, 15 Mar 2010 18:22:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41563</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41563</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/03/15/adding-an-assembly-reference-to-code-files-in-the-saleslogix-application-architect.aspx#comments</comments><description>&lt;p&gt;Often when adding custom code to SalesLogix you need to reference Assemblies that are not included by default in Code Snippets or action items.&amp;nbsp; This problem will often manifest itself with an error when building like “The type or namespace name &amp;#39;Data&amp;#39; does not exist in the namespace &amp;#39;System&amp;#39; (are you missing an assembly reference)”&lt;/p&gt;  &lt;p&gt;&amp;nbsp;This article will show you how to add an assembly reference to your code.&amp;nbsp; If you look at either a Business Rule/Event or a Code Snippet Action item, both have a Reference Assemblies property.&amp;nbsp; In the code editor within Application Architect you will see comments at the top of the code that show the included referenced assemblies like so:&lt;/p&gt;  &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssemblies_416FC923.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssemblies_thumb_3A508CAB.png" style="border:0px none;display:inline;" title="Reference Assemblies" alt="Reference Assemblies" width="644" border="0" height="363" /&gt;&lt;/a&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;So how does one add a referenced assembly?&amp;nbsp; Well it is fairly easy, though do to a glitch in the interface the actual process is kind of hidden. With the code page visible, open the properties window.&amp;nbsp; In the drop down at the top of the property window you should see Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader.&amp;nbsp; If you choose this then you should see an AssembliesReference collection.&amp;nbsp; This is the avenue for adding assembly references.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;On some version of the Application Architect, the Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader is not visible to be selected in the drop down.&amp;nbsp; To get it to appear, you need to do the following:&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&amp;nbsp;Click the CodeSnippet property in the properties window (should be the first one)&lt;/li&gt;&lt;li&gt;&amp;nbsp;Click into the Code itself.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Click on the drop down in the properties window.&amp;nbsp; You should now see the choice Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader.&lt;/li&gt;&lt;/ol&gt;      &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Once you can correctly see the property window, click the Assembly References Collection property. (There should be an ellipse to choose.)&lt;/p&gt;   &lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesProperty_00CD7CB4.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesProperty_thumb_4B54BA8E.png" style="border:0px none;display:inline;" title="Reference Assemblies Property" alt="Reference Assemblies Property" width="603" border="0" height="116" /&gt;&lt;/a&gt;     &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; This will open up the Assembly Reference dialog.&amp;nbsp; It should show you what the default assemblies that are included in every event/snippet are.&lt;/p&gt;      &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesDialog_11D1AA97.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesDialog_thumb_3F52CA5A.png" style="border:0px none;display:inline;" title="Reference Assemblies Dialog" alt="Reference Assemblies Dialog" width="515" border="0" height="376" /&gt;&lt;/a&gt; &lt;/p&gt;        &lt;p&gt;If you click Add, you can add a new reference.&amp;nbsp; You will need to enter the AssemblyName at a minimum.&amp;nbsp; This should be the full file name of the assembly (i.e. System.Data.dll).&amp;nbsp; If the assembly is part of the .Net global assembly cache you should not need to enter a hint path.&amp;nbsp; If the assembly is not in the GAC, you will need to add the hint path which is the location the assembly is physically located so it can be accessed to validate during the build.&amp;nbsp; I would recommend using the base build path’s assemblies sub folder.&amp;nbsp; This requires copying your assembly into that location so it is available.&amp;nbsp; See &lt;a href="http://customerfx.com/pages/integrationblog/2009/12/17/sage-saleslogix-web-build-error-the-name-xxx-does-not-exist-in-the-current-context.aspx" target="_blank"&gt;this post&lt;/a&gt; for some more info on where assemblies need to be to build successfully. The HintPath should be the full path, plus the full file name.&amp;nbsp; &lt;/p&gt;        &lt;p&gt;While you are defining your assembly reference you may receive errors.&amp;nbsp; Just click OK.&amp;nbsp; They are basically just a warning that the assmbly reference isn’t fully defined (which it won’t be until you are done defining).&amp;nbsp; As long as you can build successfully after you add your reference you should be fine.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41563" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/Application+Architect/default.aspx">Application Architect</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Launching a report from a button in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/03/12/launching-a-report-from-a-button-in-the-saleslogix-web-client.aspx</link><pubDate>Fri, 12 Mar 2010 12:49:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41558</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41558</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/03/12/launching-a-report-from-a-button-in-the-saleslogix-web-client.aspx#comments</comments><description>&lt;p&gt;As Jason mentioned in his article &lt;a href="http://customerfx.com/pages/customization/2010/02/17/using-the-reporting-api-enhancement-in-slx-7-5-2-web.aspx" target="_blank"&gt;here&lt;/a&gt;, starting in SalesLogix 7.5.1, Sage released an undocumented Reporting enhancement that allowed for interacting with the SalesLogix web reporting Server.&amp;nbsp; The SalesLogix 7.5.2 release had this API enhancement built in, however little documentation exists and now standard samples are used in the web client.&lt;/p&gt;  &lt;p&gt;Hopefully this article will help out those who are trying to figure this out.&lt;/p&gt;     &lt;p&gt;The core of the reporting functionality is contained in a standard javascript file “ShowReportUtil.js” that interacts with the built in SalesLogix web reporting functionality.&amp;nbsp; In order to use any of the functions in the above mentioned java script files you can just add a client click event to a control (like a button), a single line of code like:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;&lt;span&gt;ShowReportByName(&amp;#39;Contact:Contact Detail&amp;#39;);     &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/OnCLientClick_49C1BF48.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/OnCLientClick_thumb_22877613.png" style="border:0px none;display:inline;" title="On CLient Click" alt="On CLient Click" width="644" border="0" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now lets look at the javascript file.&amp;nbsp; The file can be found in the Application Architect under Portal Manager…Sage SalesLogix…Support Files…jscript.&lt;/p&gt;       &lt;a href="http://customerfx.com/blogs/integrationblog/ShowReportUtilJSFile_3059BC0E.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ShowReportUtilJSFile_thumb_7B4D2CDD.png" style="border:0px none;display:inline;" title="ShowReportUtil JS File" alt="ShowReportUtil JS File" width="302" border="0" height="484" /&gt;&lt;/a&gt;     &lt;p&gt;If you examine the java script file you can see the various exposed methods available they include:   &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ShowReport(ReportNameOrId, EntityTableName, EntityId) - Shows the report defined by ReportNameOrId using the EntityTableName and EntityId values.    &lt;/li&gt;&lt;li&gt;ShowReportByName(ReportName) - Displays a report by FAMILY:NAME. The report should be based on the main table associated with the current view.    &lt;/li&gt;&lt;li&gt;ShowReportById(ReportId) - Displays a report by PLUGIN.PLUGINID. The report should be based on the main table associated with the current view.    &lt;/li&gt;&lt;li&gt;GetReportId(S) - Returns the PLUGIN.PLUGINID associated with the report defined by the S parameter (In the FAMILY:NAME format).    &lt;/li&gt;&lt;li&gt;GetCurrentReport() - Returns the report associated with the current view, if any (Outputs in the FAMILY:NAME format).    &lt;/li&gt;&lt;li&gt;PopulateGlobals(ReportId, EntityTableName, EntityId) - Populates the global report variables used in ShowReport.ascx (in Sage.SalesLogix.Client.Reports.Helper.dll).    &lt;/li&gt;&lt;li&gt;ShowDefaultReport() -&amp;nbsp; Displays the default report for the current view and entity, if a report has been associated with the view.&amp;nbsp; Defaults are defined at the top of the java script file.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41558" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>Hiding Opportunities in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/03/10/hiding-opportunities-in-the-saleslogix-web-client.aspx</link><pubDate>Wed, 10 Mar 2010 23:38:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41556</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41556</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/03/10/hiding-opportunities-in-the-saleslogix-web-client.aspx#comments</comments><description>&lt;p&gt;Occasionally we have clients who do not use the Opportunity components of the SalesLogix web client.&amp;nbsp; They have asked us to remove the Opportunity visibility within the web client.&amp;nbsp; Since this is not a common occurrence, I usually end up having to go back and remember where all the places are I need to touch.&amp;nbsp; I decided to write this article for my own reference and to help others who may be looking to do this.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;The SalesLogix web architecture makes hiding opportunities pretty easy.&amp;nbsp; most of the configuration involves simply removing web parts from various portal pages, however there are a couple of smart parts you need to touch.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;Lets start with the easy ones, the portal items to remove:&lt;/p&gt;   &lt;blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://customerfx.com/blogs/integrationblog/AccountDetails_thumb_33787952.png" style="border:0px none;display:inline;" title="Account Details" alt="Account Details" width="585" border="0" height="484" /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;On the Account Detail Page, remove the web parts “AccountOpportunities” and “AccountResellerOpportunities (Custom)” &lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/ContactDetails_7E6BEA21.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ContactDetails_thumb_73425FD7.png" style="border:0px none;display:inline;" title="Contact Details" alt="Contact Details" width="619" border="0" height="484" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On the Contact Detail Page, remove the web part “ContactOpportunities”&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/MainPortal_5327531A.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/MainPortal_thumb_051EF3A5.png" style="border:0px none;display:inline;" title="Main Portal" alt="Main Portal" width="644" border="0" height="393" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; On the main Sage SalesLogix portal, click the Navigation tab and under Navigation Bar, remove the item under “Sales” called “Opportunities” &lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/MainPortalMenu_6503E6E7.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/MainPortalMenu_thumb_2BED09E5.png" style="border:0px none;display:inline;" title="Main Portal Menu" alt="Main Portal Menu" width="644" border="0" height="376" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On the main Sage SalesLogix portal, click the Navigation tab and under Toolbar Menus, remove the item under “New” called “Opportunity…” &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;     &lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/Options_36AA613A.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/Options_thumb_2B80D6F0.png" style="border:0px none;display:inline;" title="Options" alt="Options" width="644" border="0" height="326" /&gt;&lt;/a&gt;&lt;/blockquote&gt;              &lt;p&gt;On the Options Page, remove the web parts “OpportunitiesOptionsPage (Custom)” and “DefaultOpportunityProduct (Custom)”&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;Next we need to modify a few Activity and History forms.&amp;nbsp; Most of the forms are custom smart parts but there is one History Quickform.&lt;/p&gt;        &lt;ul&gt;&lt;li&gt;Under Entity Model…Packages…SalesLogix Activity Support…History…Forms, open History Details. Bring up the Properties for the Opportunity Lookup and set the Visible property = false.&amp;nbsp; Save the Quick form.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open ActivityDetails.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open CompleteActivity.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open ScheduleCompleteActivity.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;/ul&gt;                            &lt;br /&gt;That is all there is to it.&amp;nbsp; Opportunities no longer visible in the web client.  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;            &lt;/li&gt;   &lt;/ul&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41556" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item><item><title>Using ICriteria and Not to exclude records in SalesLogix</title><link>http://customerfx.com/pages/integrationblog/2010/03/04/using-icriteria-and-not-to-exclude-records-in-saleslogix.aspx</link><pubDate>Thu, 04 Mar 2010 16:39:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41516</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41516</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/03/04/using-icriteria-and-not-to-exclude-records-in-saleslogix.aspx#comments</comments><description>
&lt;p&gt;In SalesLogix you can use the Sage.Platform.Repository.ICriteria class to query the entity model using standard ICriteria.&amp;nbsp; One thing I have been asked in the past is how do you exclude certain conditions?&amp;nbsp; A common example might be show me all of the non-closed tickets for a contact, where being closed is denoted by a status=”Closed”.&amp;nbsp; In this scenario you only want a condition similar to status&amp;lt;&amp;gt;’closed’.&amp;nbsp; This can be done using the .Not method which accepts as an input a standard parameter to exclude.&amp;nbsp; Lets take a look at the code:&lt;/p&gt;

&lt;table style="table-layout:fixed;width:600px;" cellpadding="0" cellspacing="0"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;RepositoryHelper&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt;();

Sage.Platform.Repository.ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();
criteria.Add(repository.EF.Eq(&lt;span&gt;&amp;quot;Contact.Id&amp;quot;&lt;/span&gt;, contact.Id.ToString()));
criteria.Add(repository.EF.Not(repository.EF.Eq(&lt;span&gt;&amp;quot;StatusCode&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed&amp;quot;&lt;/span&gt;)));
criteria.AddOrder(repository.EF.Desc(&lt;span&gt;&amp;quot;CreateDate&amp;quot;&lt;/span&gt;));

result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;You can see the entity factory EF.Not used above which has passed in a EF.Eq condition looking for “Closed“ statuses.&amp;nbsp; Now in this scenario I am using it assumes that StatusCode is storing “Closed” as text and not as the corresponding picklistid, which is not the standard OOTB SalesLogix behavior, but it should never the less demonstrate how to use the Not method to exclude a condition from your query result.&lt;/p&gt;
&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41516" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/IRepository/default.aspx">IRepository</category></item><item><title>SalesLogix web client error: System.IndexOutOfRangeException: Index was outside the bounds of the array</title><link>http://customerfx.com/pages/integrationblog/2010/02/24/saleslogix-web-client-error-system-indexoutofrangeexception-index-was-outside-the-bounds-of-the-array.aspx</link><pubDate>Wed, 24 Feb 2010 11:06:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41495</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41495</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/02/24/saleslogix-web-client-error-system-indexoutofrangeexception-index-was-outside-the-bounds-of-the-array.aspx#comments</comments><description>&lt;p&gt;I recently ran into this error on a client’s system when users logged into the SalesLogix client and navigated to a recently updated page.&amp;nbsp; The administrator did not encounter the same issue when navigating to the same page.&amp;nbsp; Since I knew no log-in specific customizations were in play, I knew it had to be an issue beyond the web site.&amp;nbsp; The SalesLogix provider acts differently for users than it does for the admin.&amp;nbsp; Specifically when a user connects through the provider the provider adds on record level and field level security.&amp;nbsp; Knowing this I figured that the field level security was messed up.&lt;/p&gt;        &lt;p&gt;When you install a new database field into an existing table through a SalesLogix bundle, SalesLogix does not always correctly update the field level security information of the table to include the new field.&amp;nbsp; This results in a mismatch between the number of fields the system sees in the database versus the number of fields the system detects for field security.&amp;nbsp; This mismatch was the root cause of the specific error mentioned in this post title.&amp;nbsp; Now it is very easy to fix the mismatch of database and field level security.&lt;/p&gt;        &lt;p&gt;To fix the mismatch simply log into the SalesLogix Administrator as admin.&amp;nbsp; Go to Manage…Field Level Security.&amp;nbsp; When the Manage dialog comes up you just need to click the OK button.&amp;nbsp; When this is clicked the Field Level Security information is re-written using the current database level definitions.&amp;nbsp; You do not even need to actually modify a field level profile.&amp;nbsp; Of course, it is a good idea to ensure that the new fields have the proper field level security levels inside each security profile.&lt;/p&gt;     I always recommend that after installing a bundle the database changes you open and close the Manage Field Level Security dialog to avoid these kinds of problems.&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41495" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item><item><title>Properly adding child records using the SalesLogix entity model</title><link>http://customerfx.com/pages/integrationblog/2010/02/17/properly-adding-child-records-using-the-saleslogix-entity-model.aspx</link><pubDate>Wed, 17 Feb 2010 11:54:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41489</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41489</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/02/17/properly-adding-child-records-using-the-saleslogix-entity-model.aspx#comments</comments><description>&lt;p&gt;The SalesLogix entity model offers a really great way of working with data in SalesLogix and letting the system establish all of the links for you- as long as you know what you are doing.&lt;/p&gt;    &lt;p&gt;One of the really great things that you can do is to add child entities to a parent, even if the parent is not yet in the database.&amp;nbsp; This is especially helpful if you need to create child records while still on an insert screen, like when inserting a contact being able to add multiple history records for the contact, even before the contact is created.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If we were working in the LAN you would have the problem of not having the contact in the database and available for you to get its ID so that you could use the ID when inserting child records.&amp;nbsp; Normally in the LAN client you would need to generate an ID and then set the ContactID value with that before saving the record.&amp;nbsp; In this way you forced the system to use your record ID rather than wait for the record to be committed. Each child record you added you would need to pass the ContactID and properly set the foreign key field so that the child records were linked to the opportunity.&amp;nbsp; And if the user later decided not to actually insert the contact, you had to remember to go in and delete any child records you may have inserted already.&amp;nbsp; In short, a big headache.&lt;/p&gt; &lt;p&gt;With the entity model you simple tell the system you want to add a new child entity into the parent entity’s collection.&amp;nbsp; The system automatically worries about if it exists yet and how to actually do the linking for you.&lt;/p&gt;    &lt;p&gt;Lets take look at the proper way of doing this.&lt;/p&gt;&lt;p&gt; First of all, lets talk about one way of doing it that should not be used.&amp;nbsp; Using the entity Save() method.&amp;nbsp; The reason that this should not be used is because calling Save() on a child record will actually roll-up and save all parent entities and all child entities of the parent.&amp;nbsp; This could lead to premature saving that could bypass important business validation logic.&amp;nbsp; Lets look at one example.&amp;nbsp;&lt;/p&gt;&lt;p&gt; Say we have the insert Contact screen and when the Contact Status is set to a certain value we want to create some activity record. To do so we could use code like:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000cc"&gt;Sage.Entity.Interfaces.IContact contact = this.BindingSource.Current as Sage.Entity.Interfaces.IContact     &lt;br /&gt;Sage.Entity.Interfaces.IActivity act = Sage.Platform.EntityFactory.Create&amp;lt;Sage.Entity.Interfaces.IActivity&amp;gt;();      &lt;br /&gt;act.AccountId =&amp;nbsp; contact.Account.Id.ToString();      &lt;br /&gt;act.AccountName = contact.Account.AccountName;      &lt;br /&gt;act.ContactId =&amp;nbsp; contact.Id.ToString();      &lt;br /&gt;act.Description = &amp;quot;Something&amp;quot;      &lt;br /&gt;...      &lt;br /&gt;act.Save()&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now the problem with this code is three fold.&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;We do not yet have the contact.Id property filled in.&amp;nbsp; This is only generated after the Contact entity has been saved and not during the insertion process.&amp;nbsp; If the Activity entity had a entity relationship property called Contact which represented Sage.Entity.Interfaces.IContact, we could instead pass in act.Contact = contact, but again this is not the best approach because of the next point.&lt;/li&gt;&lt;li&gt;Calling the act.Save() will actually save the new Activity record but also save it’s parent, the new Contact we are inserting.&amp;nbsp; At this point maybe the contact is not fully completed.&amp;nbsp; We do not want to trigger the parent Save method prematurely.&amp;nbsp; For this reason, lets look at the right way of doing it&lt;/li&gt;&lt;li&gt;Using the Save() method like this also means you would need to remove this saved record, should the user decide to not complete the insertion of the new contact.&amp;nbsp; However that would also be complicated since by calling the child’s Save() method you have already actually saved the Contact record!&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;The proper way of adding children to an entity is by inserting records into the parents collection.&amp;nbsp; So instead of the code above having&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;     &lt;p&gt;&lt;font color="#0000cc"&gt;act.Save() &lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;at the end, we would instead want to add the new Activity record to the Contacts, Activity collection like so:&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;       &lt;p&gt;&lt;font color="#0000cc"&gt;contact.Activities.Add(act);&lt;/font&gt;&lt;/p&gt;     &lt;/blockquote&gt;           &lt;p&gt;Using this method simply adds the Activity into a temporary collection that will be actually added to the database once the user chooses to insert the contact.&amp;nbsp; When the contact.Save() method is eventually called it will save all of the parent data and any data residing in child collections.&amp;nbsp; Conversely if the user cancels the insertion all of the pending child collections are flushed automatically.&lt;/p&gt;    &lt;p&gt;Again, the Entity Model, if understood, simplifies how you do things in the SalesLogix web client.&amp;nbsp; You no longer need to worry about if your parent record exists, or how to correctly bind records together.&amp;nbsp; Using the Entity Model correctly takes care of these things for you.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41489" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Setting both the Text and Value properties of Items in the SalesLogix ComboBox control</title><link>http://customerfx.com/pages/integrationblog/2010/02/11/setting-both-the-text-and-value-fields-of-the-saleslogix-combobox-control.aspx</link><pubDate>Thu, 11 Feb 2010 17:21:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41485</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41485</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/02/11/setting-both-the-text-and-value-fields-of-the-saleslogix-combobox-control.aspx#comments</comments><description>  &lt;p&gt;SalesLogix web has a “ComboBox” control which is actually rendered on the deployed page as an ASP ListBox control.&amp;nbsp; In the Application Architect you can see the control has two properties for Value and Text.&amp;nbsp; The value &lt;/p&gt; &lt;a href="http://customerfx.com/blogs/integrationblog/ComboBoxProperties_6077CF7A.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ComboBoxProperties_thumb_2B6B404A.png" style="border:0px none;display:inline;" title="ComboBox Properties" alt="ComboBox Properties" width="439" border="0" height="484" /&gt;&lt;/a&gt;     &lt;p&gt;One would assume SalesLogix would have a built in property exposed to allow you to add items to the ComboBox and to set the Text and Value portions of said items, and they do, sort of.&amp;nbsp; If you go to a code editor in the Application Architect and start looking at the attributes and methods exposed for the ComboBox you will see an Items collection with an Add method.&amp;nbsp; Looks like we have it.&lt;/p&gt; &lt;a href="http://customerfx.com/blogs/integrationblog/CodeHelp_0B50338D.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/CodeHelp_thumb_0026A943.png" style="border:0px none;display:inline;" title="CodeHelp" alt="CodeHelp" width="449" border="0" height="56" /&gt;&lt;/a&gt;     &lt;p&gt;As the code help shows the add method takes two parameters on for the text string and one for the value string. The only problem with this is if you do so, something like:&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;cboProblem.Items.Add(“Some text”,”ID123”);&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;     &lt;p&gt;You will get an error when you visit the page on the web site along the lines of:&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;A smart part associated with this page has failed to load: c:\Inetpub\wwwroot\site\SLXClient\SmartParts\Ticket\TicketCall.ascx(124): error CS1501: No overload for method &amp;#39;Add&amp;#39; takes &amp;#39;2&amp;#39; arguments&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;p&gt;If you pass in instead just:&lt;/p&gt;  &lt;blockquote&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;cboProblem.Items.Add(“some text”);&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;p&gt;&amp;nbsp;This will work, however both the text and value properties of the list item will be “Some Text”.&amp;nbsp; Not good if you need to know a specific ID value of a list item chosen.  &lt;/p&gt;&lt;p&gt;&amp;nbsp;So what gives?&amp;nbsp; Well it turns out what you actually need to pass into the Add method is a ListItem.&amp;nbsp; The list item can then have two values, one for text and one for value.&amp;nbsp; So the proper format of the add command would be:&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;     &lt;p&gt;&lt;font color="#0000ff"&gt;cboProblem.Items.Add( new System.Web.UI.WebControls.ListItem(“Some text”,”ID123”));&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;     &lt;p&gt;Now that you have populated the list with your various entries and defined the text and value portions of the items you can retrieve them like so:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;       &lt;p&gt;&lt;font color="#0000ff"&gt;//get selected item&amp;#39;s&amp;nbsp; value           &lt;br /&gt;string val = cboProblem.Items[cboProblem.SelectedIndex].Value            &lt;br /&gt;//get selected item&amp;#39;s text            &lt;br /&gt;string disp = cboProblem.Items[cboProblem.SelectedIndex].Text&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41485" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Getting a user time stamp in the SalesLogix Web client</title><link>http://customerfx.com/pages/integrationblog/2010/02/10/getting-a-user-time-stamp-in-the-saleslogix-web-client.aspx</link><pubDate>Wed, 10 Feb 2010 12:07:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41471</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41471</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/02/10/getting-a-user-time-stamp-in-the-saleslogix-web-client.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The SalesLogix web client has a couple of locations that they have a button to add a user time stamp within a memo field.&amp;nbsp; For instance, on the standard Ticket Extended Details, on the Problem and Solution fields.&amp;nbsp; If you look at these buttons they are actually executing a Sage Business rule called “AddTicketSolutionTimeStamp” or “AddTicketProblemTimeStamp”.&amp;nbsp; These business rules actually prefixes the data already in the solution or problem with a user and date time stamp in the format of “Lee Hogan 2/9/2010 12:40:18 PM (Central Standard Time)”.&lt;/p&gt;    &lt;p&gt;This time stamp would be a useful feature to use elsewhere but since this is built into a standard Sage business rule on the Ticket you can’t simply call these business rules.&amp;nbsp; However, if we dig into one of the business rule using reflector we can see that if utilizes the Sage.SalesLogix.BusinessRule class in the Business Rule assembly to actually get the time stamp:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/TicketBusinessRule_7DE5FD6A.jpg"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/TicketBusinessRule_thumb_5DCAF0AD.jpg" style="border:0px none;display:inline;" title="Ticket Business Rule" alt="Ticket Business Rule" width="644" border="0" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The fully qualified path to the rule is “Sage.SalesLogix.BusinessRules.BusinessRuleHelper.AddUserDateTimeStamp()”&lt;/p&gt;        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Luckily this Business Rule Helper is an exposed method.&amp;nbsp; Sage has a bad habit of not publically exposing some helpful rules but in this case we have lucked out. So with this method available to us we can use it somewhere to add our own user time stamp like:&lt;/p&gt;          &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;                   &lt;p&gt;&lt;font color="#0000ff"&gt;Sage.Entity.Interfaces.IWidget widget = this.BindingSounrce.Current as Sage.Entity.Interfaces.IWidget;                       &lt;br /&gt;if(widget.Notes != null) widget.Notes = Sage.SalesLogix.BusinessRule.BusinessRulesHelper.AddUserDateTimeStamp() + System.Environment.NewLine + widget.Notes;&lt;/font&gt;&lt;/p&gt;                 &lt;/blockquote&gt;                                                   &lt;p&gt;Simple&lt;/p&gt;            &lt;p&gt;&amp;nbsp;&lt;/p&gt;                   &lt;p&gt;&amp;nbsp;&lt;/p&gt; x          &lt;img src="http://customerfx.com/aggbug.aspx?PostID=41471" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>SalesLogix 7.5.2 Hot Fix 1 – the Dependency Lookup is still broken</title><link>http://customerfx.com/pages/integrationblog/2010/01/27/saleslogix-7-5-2-hot-fix-1-the-dependency-lookup-is-still-broken.aspx</link><pubDate>Wed, 27 Jan 2010 22:04:05 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41449</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41449</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/01/27/saleslogix-7-5-2-hot-fix-1-the-dependency-lookup-is-still-broken.aspx#comments</comments><description>SalesLogix released hotfix 1 for SalesLogix 7.5.2.&amp;#160; One of the published resolutions of the hot fix was a modification to the dependency lookup  &lt;p&gt;   &lt;p&gt;to fix defect 1-72412 “Editing ACI values on the ticket causes the ACI view to freeze”.&amp;#160; This fix entailed a new version of the SalesLogix web control assembly.&amp;#160; I had been hoping that Sage would also sneak in a serious design flaw with the dependency lookup that prevents you from seeing what the user has set the value to.&amp;#160; For instance on a ticket If a ticket has an Area=A Category=B and Issue=C and the user changes this so the Area=A the Category=Y and the Issue=Z, you would expect the exposed OnChange event of the dependency lookup to return that the new values are A, Y, and Z respectively.&amp;#160; However the on change event apparently runs too soon and still returns A, B, and C.&amp;#160; This is really lame and makes the dependency lookups unusable for logic evaluation purposes .&lt;/p&gt;    &lt;p&gt;I guess I will keep my fingers crossed for Hot Fix 2.&lt;/p&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41449" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Clearing user default settings in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/01/13/clearing-user-default-settings-in-the-saleslogix-web-client.aspx</link><pubDate>Wed, 13 Jan 2010 11:12:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41407</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41407</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/01/13/clearing-user-default-settings-in-the-saleslogix-web-client.aspx#comments</comments><description>&lt;p&gt;Each user of the SalesLogix web client can define various user based&amp;nbsp; settings while they are using the SalesLogix web client.&amp;nbsp; Things such as splitter height, visible tabs, open tabs, etc are all stored per user.&amp;nbsp; Sometimes these settings block other changes that you would like to force out administratively.&amp;nbsp; For instance what if you decide you want to set the tab order on the account page to be a particular order?&amp;nbsp; Well for users who have never logged in, the next time they log in they will see this change.&amp;nbsp; however, users who have already used the system will not see the change.&amp;nbsp; This is because the user’s previous tab definitions have already been defined and stored.&amp;nbsp; These individual user preferences take precedence over the default settings.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;The settings are actually stored in the SalesLogix database in the VIRTUALFILESYSTEM table.&amp;nbsp; This is so that regardless of what computer the user logs into the web client with, the settings will carry across.&amp;nbsp; Now the VIRTUALFILESYSTEM actually contains pretty much everything that is the SalesLogix web client, including all of the entity definitions, screens, code, etc.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;Because of this and because it is just smart, I need to pause here and say: “PROCEED AT YOUR OWN RISK.&amp;nbsp; MODIFYING THE DATABASE AS DERSCRIBED BELOW CAN BE POTENTIALLY HARMFUL IF YOU DO NOT KNOW WHAT YOU ARE DOING.&amp;nbsp; PROCEED ONLY IF YOU UNDERSTAND WHAT YOU ARE DOING AND ALWAYS TRY THIS SORT OF THING IN A TEST SYSTEM FIRST”.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;OK Now that this disclaimer is out of the way, you can find all of your users default settings stored in the VirtualFileSystem by running a query similar to:&lt;/p&gt;  &lt;blockquote&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;Select * from VIRTUALFILESYSTEM where modifyuser = ‘{USERNAME}’ and itemname&amp;lt;&amp;gt;’{USERNAME}’&lt;/font&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;p&gt;&amp;nbsp;The query above needs to be updated to have {USERNAME} changed to the SalesLogix username like “lee” for Lee Hogan.  &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now to clear all of the user settings you can run a query like:&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;       &lt;p&gt;&lt;font color="#0000ff"&gt;Delete from VIRTUALFILESYSTEM where modifyuser = ‘{USERNAME}’ and itemname&amp;lt;&amp;gt;’{USERNAME}’&lt;/font&gt;&lt;/p&gt;     &lt;/blockquote&gt; After executing the script you would need to do an IIS reset to clear the old settings from the IIS cache.      &lt;img src="http://customerfx.com/aggbug.aspx?PostID=41407" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item><item><title>How to make the SalesLogix web insert Contact/Account screen work like the LAN version for Account fields being editable</title><link>http://customerfx.com/pages/integrationblog/2010/01/07/how-to-make-the-saleslogix-web-insert-contact-account-screen-work-like-the-lan-version-for-account-fields-being-editable.aspx</link><pubDate>Thu, 07 Jan 2010 17:04:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41396</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41396</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/01/07/how-to-make-the-saleslogix-web-insert-contact-account-screen-work-like-the-lan-version-for-account-fields-being-editable.aspx#comments</comments><description>&lt;p&gt;In the SalesLogix web client the insert Account Contact screen behaves differently than the LAN version in that you can modify the Account level fields when you select an existing Account to use.&amp;nbsp; I was recently asked how to make it work like the LAN client so that the Account fields are not editable.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;When I looked at the form (which is a custom Contact smart part called InsertContact.aspx) I noticed that on the Account lookup control there is code in there to do this, however it does not appear to work correctly.&amp;nbsp; In the code you can see it has something like this:&lt;/p&gt;  &lt;p&gt;if ((account != null) &amp;amp;&amp;amp; (contact != null))   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContactAccountName.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adrAccountAddress.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phnAccountMainPhone.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phnAccountFax.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountType.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountSubType.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountStatus.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountIndustry.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtAccountBusinessDescription.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usrAccountManager.Enabled = false;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ownAccountOwner.Enabled = false;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;I found that by changing it to read like this instead, it worked:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;if ((account != null) &amp;amp;&amp;amp; (contact != null))   &lt;br /&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtContactAccountName.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adrAccountAddress.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; phnAccountMainPhone.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; phnAccountFax.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountType.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountSubType.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountStatus.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pklAccountIndustry.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtAccountBusinessDescription.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usrAccountManager.ReadOnly = true;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ownAccountOwner.ReadOnly = true;&lt;/p&gt;  &lt;p&gt;Go figure.&amp;nbsp; I guess the enable property is not quite functional.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41396" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>SalesLogix 7.5.2 Web - Invalid Index X for this OleDBParameterCollection Error</title><link>http://customerfx.com/pages/integrationblog/2010/01/06/saleslogix-7-5-2-web-invalid-index-x-for-this-oledbparametercollection-error.aspx</link><pubDate>Wed, 06 Jan 2010 15:32:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41389</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41389</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2010/01/06/saleslogix-7-5-2-web-invalid-index-x-for-this-oledbparametercollection-error.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I recently ran into an error on an upgraded SalesLogix 7.5.2 web client when attempting to save changes to an entity using the standard entity.Save() method.&amp;nbsp; The error looked like:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/SavingError_4ED32C06.jpg"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/SavingError_thumb_0A92C4BA.jpg" style="border:0px none;display:inline;" title="Saving Error" alt="Saving Error" width="394" border="0" height="104" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;I found that the cause of the problem was that for some business logic reasoning we had been setting an entity property’s relationship ID via code on the result of a lookup control’s change action.&amp;nbsp; Let me explain that a little better.&amp;nbsp; The entity ( I will call Widgets) has a relationship to another entity.&amp;nbsp; That relationship is expressed with a property called Widget.Role.&amp;nbsp; The entity itself has a property called Widget.RoleId which is the field where the ID is stored that actually creates the relationship to the other entity.&amp;nbsp; Hopefully that makes sense.&lt;/p&gt;    &lt;p&gt;&amp;nbsp;Now when you use a lookup control, what happens when you perform a lookup to an entity, SalesLogix automatically creates the relationship (Widget.Role) but does not populate the ID field (Widget.RoleId) until after the save event.&lt;/p&gt;    &lt;p&gt;&amp;nbsp;Back to my scenario, we had been using in code calls to Widget.RoleId to get values.&amp;nbsp; Now this worked fine for existing entities with the relationships established but when inserting a new Widget the RoleId property was empty, even after using the lookup control to populate it.&amp;nbsp; For this reason we had mistakenly added code to the lookup change event to set Widget.RoleID = Widget.Role.Id.&lt;/p&gt;    &lt;p&gt;&amp;nbsp;I say mistakenly, because this led to the error I mentioned above.&amp;nbsp; Apparently SalesLogix, when saving a record attempts to identify how many fields have changed on the entity in order to issue the underlying database commands.&amp;nbsp; By us having manually updated both the Widget.Role (via the lookup) and Widget.RoleID (via the code) the system saw 2 fields having been updated even though it was in fact an update to really only one field.&amp;nbsp; This caused the creation of the array used by the underlying database update to have an invalid array.&amp;nbsp; &lt;/p&gt;    &lt;p&gt;&amp;nbsp;We resolved this by changing our code from checking the Widget.RoleId property to checking the SalesLogix generated Widget.Role.Id property and all was back to blissfulness.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41389" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>KnowledgeSync has updated their user manual</title><link>http://customerfx.com/pages/integrationblog/2009/12/22/knowledgesync-has-updated-their-user-manual.aspx</link><pubDate>Tue, 22 Dec 2009 13:08:39 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41343</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41343</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/22/knowledgesync-has-updated-their-user-manual.aspx#comments</comments><description>&lt;p&gt;Anyone that has worked with the KnowledgeSync manual in the past knows that it is a massive document of over 500 pages.&amp;#160; Well, VineyardSoft has decided to do a re-write of the manual and has condensed it down while at the same time updating documentation with newer operating systems.&amp;#160; You can download the new document &lt;a href="http://01ec032.netsolhost.com/lit/ks_manual.zip" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41343" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/KnowledgeSync/default.aspx">KnowledgeSync</category></item><item><title>Error deploying a SalesLogix 7.5.2 web client portal</title><link>http://customerfx.com/pages/integrationblog/2009/12/21/error-deploying-a-saleslogix-7-5-2-web-client-portal.aspx</link><pubDate>Mon, 21 Dec 2009 11:29:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41318</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41318</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/21/error-deploying-a-saleslogix-7-5-2-web-client-portal.aspx#comments</comments><description>&lt;p&gt;Recently I upgraded a SalesLogix web environment from 7.5.1 to 7.5.2.&amp;nbsp; Once I had done so when I tried to deploy I received the following error:&lt;/p&gt;  &lt;p&gt;ERROR - The following project item, &amp;#39;\Portal\SlxClient\ChildPages\Access\Access.page.xml&amp;#39; failed validation.&lt;/p&gt;  &lt;p&gt;The error referenced a custom page called Access in the system.&amp;nbsp; I opened up that page and everything looked fine.&amp;nbsp; I have had experiences like this where if something errors in 7.5.2, simply modifying it trivially (like adding a space to a code file) and re-saving fixed the problem.&amp;nbsp; When I tried that on this scenario I received an error when attempting to save:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;a href="http://customerfx.com/blogs/integrationblog/image_3FCD4FB2.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/image_thumb_1173CA05.png" style="border:0px none;display:inline;" title="image" alt="image" width="244" border="0" height="114" /&gt;&lt;/a&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Apparently the 7.5.2 does some additional validations that 7.5.1 does not.&amp;nbsp; This particular page it turns out did not have an Entity defined for it under the Page’s Page Property collection.&amp;nbsp; Once I added that, I could save it.&amp;nbsp; After saving I was able to deploy.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; If you run into an error during deployment, check out the page it references.&amp;nbsp; Make sure it is properly configured.&amp;nbsp; Again this kind of validation in new in SalesLogix 7.5.2 web.&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41318" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Sage SalesLogix web Build error: The name 'XXX' does not exist in the current context</title><link>http://customerfx.com/pages/integrationblog/2009/12/17/sage-saleslogix-web-build-error-the-name-xxx-does-not-exist-in-the-current-context.aspx</link><pubDate>Thu, 17 Dec 2009 19:08:28 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41317</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41317</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/17/sage-saleslogix-web-build-error-the-name-xxx-does-not-exist-in-the-current-context.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I have found what appears to be a bug in 7.5.2 and the handling of external assemblies referenced for use in SalesLogix code, like business rules, events, custom properties, etc.&amp;#160; I had a system that had multiple external assemblies handling some global business rules that were shared across multiple entities in the SalesLogix web portal.&amp;#160; After upgrading to 7.5.2 I could no longer do a full build on the system.&amp;#160; I would get the following error: &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;ERROR - C:\Users\bobo\AppData\Roaming\Sage\Platform\Output\Sage.SnippetLibrary.CSharp\src\Sage.SnippetLibrary.CSharp.@.296d53c4-46bb-4baa-a4f5-44f57dec9720.codesnippet.cs(47,13):The name &amp;#39;XXX&amp;#39; does not exist in the current context&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;   &lt;p&gt;The rule that uses the assembly does have a reference to the assembly and worked fine in 7.5.1.&amp;#160; I tried removing the reference and re-adding in the business rule.&amp;#160; In the actual code file, the intellisense in the Application Architect code editor detects the assembly and its various classes and methods. However every rule, event, custom property, etc. that uses this external assembly failed with the same error. &lt;/p&gt;   &lt;a href="http://customerfx.com/blogs/integrationblog/CodeFile_590D1320.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="CodeFile" border="0" alt="CodeFile" src="http://customerfx.com/blogs/integrationblog/CodeFile_thumb_38F20663.jpg" width="447" height="484" /&gt;&lt;/a&gt;     &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;I initially realized my external assemblies all had references to the old 7.5.1 Sage references. I recompiled the assembly using the new 7.5.2 Sage dlls as references within it.&amp;#160; This did not help but is an important thing to remember you have to do. &lt;/p&gt;  &lt;p&gt;I also tried adding a reference in the codesnippet.xml file (On Win7 this is @ C:\ProgramData\Sage\Platform\Configuration\Global) which I understand is supposed to act like a global assembly reference for all files on the site.&amp;#160; This didn&amp;#39;t work either. &lt;/p&gt;  &lt;p&gt;I was at my wits end.&amp;#160; By chance I happened to see a warning message that had occurred way up in my build.&amp;#160; That led me to the solution I needed. &lt;/p&gt;  &lt;p&gt;As I mentioned,&amp;#160; I think this should be considered a bug. It is really stupid but easy to remedy. &lt;/p&gt;  &lt;p&gt;I think that before 7.5.2 when you had external assemblies referenced in code snippets, or whatnot, that when you built, it used the specified reference path to do the build (logical).&amp;#160; Apparently in 7.5.2, while you still need to add the reference to the assemblies in the code files, it apparently does not use that path during the build, or at least all parts of the build. &lt;/p&gt;  &lt;p&gt;The simple fix is: any external assemblies need to exist in the SalesLogix\SalesLogix directory (C:\Program Files\SalesLogix\SalesLogix&amp;quot;), regardless of where each code file says the reference location is.&amp;#160; I figured this out because I had a warning message earlier on that said: &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Unable to locate assembly reference FX.Gen.dll in assemblies or C:\Program Files\SalesLogix\. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now, I don&amp;#39;t know why this message says this because my assembly is in my output folder&amp;#39;s &amp;quot;assemblies&amp;quot; directory (that is where I specified it was in my code file references).&amp;#160; Regardless, simply copy the file to the directory makes it all sing. &lt;/p&gt;  &lt;p&gt;This whole assembly reference area seems REALLY kludge to me.&amp;#160; It gets exponentially harder to manage when you are talking about multiple assemblies being added by multiple developers on different computers with different OS and centrally shared using Git.&amp;#160; I hope Sage does something to help with this because I can see that this will be a nightmare for system maintenance and upgrades.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41317" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>SalesLogix 7.5.2 change to the IOwner interface</title><link>http://customerfx.com/pages/integrationblog/2009/12/17/saleslogix-7-5-2-change-to-the-iowner-interface.aspx</link><pubDate>Thu, 17 Dec 2009 15:09:43 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41315</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41315</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/17/saleslogix-7-5-2-change-to-the-iowner-interface.aspx#comments</comments><description>I have not found any official reference to this change anyplace: prior to 7.5.2 the Sage.Entity.Interfaces.IOwner entity contained a RightsCollection collection of user rights (Sage.Entity.Interfaces.IOwnerRights which represents the database table SECRIGHTS).&amp;#160; In 7.5.2 this has changed to now just be called Rights.&amp;#160; If you have any code that was using the previous property name “RightsCollection” you will need to update them when you upgrade to 7.5.2.  &lt;img src="http://customerfx.com/aggbug.aspx?PostID=41315" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>The SalesLogix bundlediff.exe utility for SalesLogix 7.5.2</title><link>http://customerfx.com/pages/integrationblog/2009/12/16/the-saleslogix-bundlediff-exe-utility-for-saleslogix-7-5-2.aspx</link><pubDate>Wed, 16 Dec 2009 19:52:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41308</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41308</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/16/the-saleslogix-bundlediff-exe-utility-for-saleslogix-7-5-2.aspx#comments</comments><description>&lt;p&gt;During the SalesLogix upgrade from a previous version of the SalesLogix web client ot 7.5.2 one of the procedures is to create a manifest bundle of all of you customizations.&amp;nbsp; SalesLogix has now provided a utility to help compare what from your custom manifest has changed in SalesLogix 7.5.2.&lt;/p&gt;    &lt;p&gt;Lest say that I am on 7.5.1 and want to bundle up all of my changes.&amp;nbsp; The first step would be to create a workspace VFS that contained the base 7.5.1 VFS.&amp;nbsp; Make sure this base VFS also consists of any hot fixes matching your current version.&amp;nbsp; From within Application Architect you can then go to your custom VFS and create a bundle based on project differences.&amp;nbsp; Select to compare to the base 7.5.1 workspace you set up and the resulting bundle should be a comprehensive list of all the items that have changed from the base 7.5.1 system.&lt;/p&gt;    &lt;p&gt;In the SalesLogix 7.5.2 service pack, when you extract it you will find a “Project&amp;nbsp; Differences” folder.&amp;nbsp; In this folder are bundle manifests showing what has changed from one level to the next.&amp;nbsp; Since my example I am upgrading from 7.5.1 to 7.5.2 I would be interested in the file “Sage SalesLogix 7.5.1 to 7.5.2 Model Changes.zip”.&lt;/p&gt;    &lt;p&gt;Now armed with these two manifests, the first thing to do is copy them to a short path on a computer that is on the 7.5.2 level.&amp;nbsp; I would recommend something simple like C:\SLX752.&amp;nbsp; For ease of use I would copy these manifest into this directory.&amp;nbsp; To make it even easier to work with I would also rename the manifest to something short like “Custom.zip” and “SLX.zip”. The reason for this is because we need to type this into a command prompt coming up and working with short names is nice.&amp;nbsp; You can keep a copy of these files with their original names to be used for later purposes.&lt;/p&gt;      &lt;p&gt;Now with the files here you can run the bundlediff.exe that is part of the SalesLogix 7.5.2 installation.&amp;nbsp; This is a command line based utility that requires you to pass in the parameters you need.&amp;nbsp; In typical Sage-like fashion there is not a lot of documentation but basically this utility lets you compare two bundle manifests and see what common elements are contained in them.&lt;/p&gt;        &lt;p&gt;The first thing you need to do is open a command line prompt (Start…Run “cmd”).&amp;nbsp; Then you will need to navigate the prompt to the SalesLogix installation directory or type out the full path to the utility.&amp;nbsp; Once you are in the SalesLogix directory you can then execute the bundlediff.exe.&amp;nbsp; This utility requires you specify two bundles and a compare option switch.&amp;nbsp; By default the utility outputs to the console but you can add a switch to output it to a file.&lt;/p&gt;        &lt;p&gt;Lets take a look at the command line:&lt;/p&gt;        &lt;blockquote&gt;           &lt;p&gt;&lt;font color="#0000cc"&gt;bundlediff.exe /Bundle1:&amp;quot;C:\SLX752\Custom.zip&amp;quot; /Bundle2:&amp;quot;C:\SLX752\SLX.zip&amp;quot; /DiffOption:Common &amp;gt;&amp;quot;C:\SLX752\Log.txt&amp;quot;&lt;/font&gt;&lt;/p&gt;         &lt;/blockquote&gt;                                   &lt;p&gt;You must specify each bundle by calling /Bundle1 or /Bundle2 followed by a colon and then the path to the manifest.&amp;nbsp; The other switch is /DiffOption which also follows the format of the switch, a colon, and then the option to choose.&amp;nbsp; Here are your choices: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;AllItems&lt;/b&gt; - lists every item in both bundles. This is a flat list of bundle contents without differencing. You can use this to see a complete list of what items Sage changed in the release.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Common&lt;/b&gt; - lists the bundle items that exist in both bundles. These are the items that you will have to act on (ignore or merge) when you apply your customization bundle.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bundle1OnlyItems&lt;/b&gt; - lists items that exist in bundle 1 but not in bundle 2.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bundle2OnlyItems&lt;/b&gt; - lists items that exist in bundle 2 but not in bundle 1.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;CommonAndExclusive&lt;/b&gt; - lists all items using the Common, Bundle1OnlyItems, and Bundle2OnlyItems parameters.&lt;/li&gt;&lt;/ul&gt; The last part of the command line is the switch to output the contents from the console window to a file.&amp;nbsp; This requires the &amp;gt; symbol followed by the path to the file to log to.&amp;nbsp; I believe the log file must already exist, the utility will not create one so you will need to create an empty text file to use.By aware that all of the command line switches and options are case-sensitive&lt;br /&gt;&lt;p&gt;The end result is a log that looks something like this:&lt;/p&gt;                   &lt;blockquote&gt;&lt;p&gt;&lt;font color="#0000cc"&gt;Validating command line arguments.           &lt;br /&gt;The following are bundle items that exist in both bundles.            &lt;br /&gt;\Entity Model\SalesLogix Application Entities\Account\QuickForms\AccountContacts.main.quickform.xml            &lt;br /&gt;\Entity Model\SalesLogix Application Entities\Account\QuickForms\AccountTickets.main.quickform.xml&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;          Hopefully this helps explain the SalesLogix bundlediff utility a little bit.&amp;nbsp; While this is a nice little feature to have the same type of comparison could be done using other file and directory comparison tools that are widely available for free, like &lt;a href="http://www.sourcegear.com/diffmerge/" target="_blank"&gt;DiffMerge&lt;/a&gt; or commercial products like &lt;a href="http://www.scootersoftware.com/" target="_blank"&gt;Beyond Compare&lt;/a&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41308" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>Unable to open 7.5.2 Application Architect after upgrading from 7.5.1</title><link>http://customerfx.com/pages/integrationblog/2009/12/15/unable-to-open-7-5-2-application-architect-after-upgrading-from-7-5-1.aspx</link><pubDate>Tue, 15 Dec 2009 22:45:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41233</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41233</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/15/unable-to-open-7-5-2-application-architect-after-upgrading-from-7-5-1.aspx#comments</comments><description>&lt;p&gt;Not sure under what circumstances this will occur but I just ran into this on a Windows 7 64bit computer and thought I would post.&amp;nbsp; After upgrading the computer from a 7.5.1 installation to 7.5.2 I was unable to open the Application architect.&amp;nbsp; An error was displayed: &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#0000cc"&gt;A module declared a dependency on another module which is not declared to be loaded; Missing module(s): &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000cc"&gt;Sage.Platform.Extensibility.PlatformModule, &lt;/font&gt;&lt;/p&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#0000cc"&gt;Sage.Platform.Orm.CodeGen.CodeGenerationModule (Sage.Platform.Application)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;The solution to this problem was to uninstall the SalesLogix Admin tools and then reinstall them again (7.5.0) and then re-apply the service pack 7.5.2.&amp;nbsp; After doing this everything seemed to work fine.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41233" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Upgrade/default.aspx">SalesLogix Upgrade</category></item><item><title>Follow up to selecting a SalesLogix gridview Row ID</title><link>http://customerfx.com/pages/integrationblog/2009/12/04/follow-up-to-selecting-a-saleslogix-gridview-row-id.aspx</link><pubDate>Fri, 04 Dec 2009 19:38:37 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41192</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41192</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/04/follow-up-to-selecting-a-saleslogix-gridview-row-id.aspx#comments</comments><description>&lt;p&gt;In my &lt;a href="http://customerfx.com/pages/integrationblog/2009/11/18/retrieving-the-current-grid-row-id-in-the-saleslogix-web-control.aspx" target="_blank"&gt;previous post&lt;/a&gt;, I mentioned how to get the selected ID of a gridview’s row when you click the row.&amp;#160; Since then I have found that sometimes SalesLogix will implement an extra DataKey in the grid when it is deployed as a quick form.&amp;#160; (For instance, if you specify the grid’s DataKeyNames = “Id”, when it deploys you will actually see the grids DataKeyNames are “InstanceId, Id” When you call the code I had mentioned before:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;string historyid = grdSystemNotes.SelectedDataKey.Value.ToString();&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The system would actually return the InstanceId DataKey since that is the first specified.&amp;#160; The InstanceId is a GUID based Id for the rendered HTML grid and does no good for us wanting to get the row’s ID.&amp;#160; The more sure-fire way of getting our desired DataKey “Id” is by using code like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;string noteid = grdActivities.DataKeys[grdActivities.SelectedIndex].Values[&amp;quot;Id&amp;quot;].ToString();&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41192" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category></item><item><title>Enforcing numeric input on a SalesLogix 7.5.1 quick form text control</title><link>http://customerfx.com/pages/integrationblog/2009/12/02/enforcing-numeric-input-on-a-saleslogix-7-5-1-quick-form-text-control.aspx</link><pubDate>Wed, 02 Dec 2009 19:39:40 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41181</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41181</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/12/02/enforcing-numeric-input-on-a-saleslogix-7-5-1-quick-form-text-control.aspx#comments</comments><description>&lt;p&gt;SalesLogix has a couple of numeric based custom text controls including currency, and numeric.&amp;#160; One of the things you will find is that using these controls gives the user a slightly different experience based on the custom control chosen.&amp;#160; One of the big differences is that the currency control enforces numeric input once the user leaves the field where the numeric control has no such validation.&lt;/p&gt;  &lt;p&gt;Typically you would control this type of client side behavior in JavaScript or jQuery.&amp;#160; Unfortunately SalesLogix does not allow direct access to specifying client side events on most controls at design-time.&amp;#160; There is a way of doing this however by adding attributes to the control when the page loads using the Control’s Attribute.Add method.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now before I get to how to do that lets look at a sample of JavaScript that would restrict user input to only numeric values (and delete and backspace)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;var key = window.event.keyCode;        &lt;br /&gt;if ( (key &amp;gt; 47 &amp;amp;&amp;amp; key &amp;lt; 58) || key == 8 || key == 127)         &lt;br /&gt;&amp;#160;&amp;#160; return; //It is valid so don&amp;#39;t do anything        &lt;br /&gt;else         &lt;br /&gt;&amp;#160;&amp;#160; window.event.returnValue = null; //Don&amp;#39;t allow the input&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now how to add this so that the quick form binds our JavaScript to our control? As mentioned, using the Attribute.Add method.&amp;#160; Shown here is how you could do this using a C# Snippet Action Item “(Obsolete)” on a form Load event:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;myTextBox.Attributes.Add(&amp;quot;onkeypress&amp;quot;,       &lt;br /&gt;&amp;quot;BLOCKED SCRIPT var key = window.event.keyCode; if ( (key &amp;gt; 47 &amp;amp;&amp;amp; key &amp;lt; 58) || key == 8 || key == 127) return; else window.event.returnValue = null;&amp;quot;);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The Attributes.Add is called for your user control.&amp;#160; The first parameter is to identify what attribute you are adding.&amp;#160; In our case we want to add code to the key press event.&amp;#160; The second attribute is the actual JavaScript code.&amp;#160; Add this to an OnLoad event for you page and you have numeric input validation.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41181" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category></item><item><title>How to invoke a web lookup control’s popup event in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2009/11/27/how-to-invoke-a-web-lookup-control-s-popup-event-in-the-saleslogix-web-client.aspx</link><pubDate>Fri, 27 Nov 2009 21:44:12 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41173</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41173</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/11/27/how-to-invoke-a-web-lookup-control-s-popup-event-in-the-saleslogix-web-client.aspx#comments</comments><description>&lt;p&gt;One of the things that is often asked is how can you call a certain lookup’s “Popup event” from code in the SalesLogix web client.&amp;#160; The SalesLogix web uses JavaScript to launch these lookups.&amp;#160; You can see the invoke code of the JavaScript by putting your cursor over the lookup’s button.&amp;#160; Once you know that syntax you can determine the server side code you would use to invoke the client side code.&amp;#160; The code will typically look like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;ScriptManager.RegisterClientScriptBlock(this, GetType(), &amp;quot;ShowLookup&amp;quot;,&amp;quot;$(document).ready(function() { setTimeout(function() { &amp;quot; + &lt;font color="#ff0000"&gt;&lt;strong&gt;AssignTo&lt;/strong&gt;&lt;/font&gt;.ClientID + &amp;quot;_luobj.show() }, 500) })&amp;quot;,true);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The important thing here is to change the red part of the code to be the server side control ID of the lookup you wish to pop.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41173" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category></item><item><title>A heads up: The SalesLogix web Lookup Control is session cached</title><link>http://customerfx.com/pages/integrationblog/2009/11/20/a-heads-up-the-saleslogix-web-lookup-control-is-session-cached.aspx</link><pubDate>Fri, 20 Nov 2009 13:03:40 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41147</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41147</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/11/20/a-heads-up-the-saleslogix-web-lookup-control-is-session-cached.aspx#comments</comments><description>&lt;p&gt;I recently was having problems seeing changes I was making to a deployed ASP.Net SalesLogix web page.&amp;#160; Specifically, the changes I was making to a Lookup control.&amp;#160; What I discovered is that the changes to my page were not reflected in my lookup until after I logged out of the SalesLogix web client and logged back in.&amp;#160; Simply refreshing my page in the browser had no affect.&amp;#160; Apparently some information is being cached in session state.&amp;#160; Just a heads up that if you are not seeing something work as you would expect in the SalesLogix web client, try logging out.&lt;/p&gt;  &lt;p&gt;There are other things like changes to user security or information that I have also found are cached at log in so in general this is a good practice when testing out your pages.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41147" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item><item><title>Error attempting to sort a SalesLogix web grid control</title><link>http://customerfx.com/pages/integrationblog/2009/11/20/error-attempting-to-sort-a-saleslogix-web-grid-control.aspx</link><pubDate>Fri, 20 Nov 2009 11:29:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41090</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41090</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/11/20/error-attempting-to-sort-a-saleslogix-web-grid-control.aspx#comments</comments><description>&lt;p&gt;If you have ever added code similar to:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;&lt;font color="#0000ff"&gt;mygrid.Sort(&amp;quot;CreateDate&amp;quot;, SortDirection.Descending);&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may have seen an error similar to this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font color="#0000ff"&gt;System.Web.HttpException: The GridView &amp;#39;mygrid&amp;#39; fired event Sorting which wasn&amp;#39;t handled.&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is caused by attempting to call the sort method on a grid that does not have it&amp;#39;s EnableSorting property set to True.&amp;nbsp; Also, the column you are sorting should also have it&amp;#39;s IsSortable and SortField properties defined.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41090" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category></item><item><title>How to tell if a SalesLogix web form is in insert or edit mode</title><link>http://customerfx.com/pages/integrationblog/2009/11/19/how-to-tell-if-a-saleslogix-web-form-is-in-insert-or-edit-mode.aspx</link><pubDate>Thu, 19 Nov 2009 17:50:49 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41134</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://customerfx.com/pages/integrationblog/rsscomments.aspx?PostID=41134</wfw:commentRss><comments>http://customerfx.com/pages/integrationblog/2009/11/19/how-to-tell-if-a-saleslogix-web-form-is-in-insert-or-edit-mode.aspx#comments</comments><description>&lt;p&gt;One of the cool things about the SalesLogix web client is that you can re-use the same form for inserting a new record or updating a record.&amp;#160; While you could do this with Data forms in the SalesLogix LAN client, if you wanted to use the same form for, say inserting an account, as working with an existing one you needed to write code around what to do based on the mode.&amp;#160; With the SalesLogix web forms the system automatically does all of the insert/update logic for you based on if it is a new record or not.&amp;#160; You just need to call the Entity.Save() method that is standard on every entity and it will do the logic for you.&lt;/p&gt;  &lt;p&gt;With that being said how can you tell if your shared form is in insert mode or not?&amp;#160; Maybe you have a field you want to show on the insert view but not the edit view, or vice versa.&amp;#160; Well here is the answer:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;Sage.Platform.WebPortal.EntityPage page = Page as Sage.Platform.WebPortal.EntityPage; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;if (page.ModeId.ToUpper() == &amp;quot;INSERT&amp;quot;)       &lt;br /&gt;{        &lt;br /&gt;//Do some stuff for only the insert mode        &lt;br /&gt;}        &lt;br /&gt;else        &lt;br /&gt;{        &lt;br /&gt;//Do some stuff for just the edit mode        &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41134" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item></channel></rss>