<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Nav developer's blog : Upgrade</title><link>http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx</link><description>Tags: Upgrade</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Problems in transformation forms to pages using TransformationTools</title><link>http://blogs.msdn.com/nav_developer/archive/2009/09/14/problems-in-transformation-forms-to-pages-using-transformationtools.aspx</link><pubDate>Mon, 14 Sep 2009 15:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9894944</guid><dc:creator>gediminb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nav_developer/comments/9894944.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nav_developer/commentrss.aspx?PostID=9894944</wfw:commentRss><description>&lt;P&gt;After Microsoft Dynamics NAV 2009 SP1 release more and more developers start using it and trying to&amp;nbsp;adopt existing solutions&amp;nbsp;for new 3tier environment.&lt;BR&gt;Most workload comes from trying to adopt current forms to new object - pages.&lt;BR&gt;Particularly transformation could be done by using TransformationTools (&lt;A href="http://msdn.microsoft.com/en-us/library/dd338789.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd338789.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd338789.aspx&lt;/A&gt;), however it is not "best ever" and partners reporting&amp;nbsp;problems and require to fix it...&lt;/P&gt;
&lt;P&gt;But it isn't so easy...&lt;/P&gt;
&lt;P&gt;This tool is delivered to us from dev team and it&amp;nbsp;helps us to make transformation faster, but it is supplementary tool - we can use NAV without this tool and we can "convert " our solutions without it - do it manually.&lt;BR&gt;So "big thanks" to dev team for this tool, however we can't expect that dev team will fix all problems in tool with the same priority&amp;nbsp;as base products (Microsoft Dynamics NAV).&lt;/P&gt;
&lt;P&gt;And we can't expect fixes for problems related&amp;nbsp;to incorrect transformed statements - after transformation pages can't be compiled...&lt;BR&gt;Problem is in tool simplicity: it searches for text and convert it to another text. Converting rules are described in file CodeRules.txt (&lt;A href="http://msdn.microsoft.com/en-us/library/dd338843.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd338843.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd338843.aspx&lt;/A&gt;).&lt;BR&gt;But simplicity is as strength as weakness of this tool - only text described in CodeRules.txt file will be converted, if there are any differences in text - transformation will be incorrect.&lt;BR&gt;For example:&lt;BR&gt;In form code we have statement:&lt;BR&gt;&lt;FONT face="Courier New"&gt;CurrForm.Number.UPDATEFONTBOLD(Number);&lt;BR&gt;&lt;FONT face=Arial&gt;Then after transformation on page will be created&amp;nbsp;new variable &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;NumberEmphasize&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;And statement will be converted to:&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;NumberEmphasize := Number;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;It is because&amp;nbsp;UPDATEFONTBOLD is not used in pages and must be removed.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;So far so good.&lt;BR&gt;Tranformation will be done correct for statements:&lt;BR&gt;&lt;FONT face="Courier New"&gt;CurrForm.Number.UPDATEFONTBOLD(Number1=Number);&lt;BR&gt;CurrForm.Number.UPDATEFONTBOLD(Number1&amp;gt;Number);&lt;BR&gt;&lt;/FONT&gt;and etc. because transformation rules are described in CodeRules.txt&lt;/P&gt;
&lt;P&gt;But transformation tool is looking for direct text fit to rules and will not transform text which is not described in Coderules.txt.&amp;nbsp;&lt;BR&gt;If code becomes little more complicated (not described the same&amp;nbsp;syntax as CodeRules)&amp;nbsp;- transformation tool capitulates.&lt;BR&gt;For example next code will not be transformed:&lt;BR&gt;&lt;FONT face="Courier New"&gt;CurrForm.Number.UPDATEFONTBOLD(Number1&amp;lt;Number);&lt;BR&gt;CurrForm.Number.UPDATEFONTBOLD(Number1=xRec.Number);&lt;BR&gt;CurrForm.Number.UPDATEFONTBOLD(xRec.Number1=Number);&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;CurrForm.Number.UPDATEFONTBOLD(Number1=Number2=Number3);&lt;BR&gt;CurrForm.Number.UPDATEFONTBOLD(Number1=(Number+100));&lt;/FONT&gt;&lt;BR&gt;...&lt;BR&gt;&lt;BR&gt;Yes... We can make rules for these statements too&amp;nbsp;(dev team delivered rules file), but we will never describe everything what could be written by happy-creative developpers around the world...&lt;BR&gt;Maybe some rules could be&amp;nbsp;never used? Who&amp;nbsp;knows..?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;I can collect all requirements for CodeRules.txt and periodically release new one (fixed). Do you want to&amp;nbsp;order me do&amp;nbsp;it, let me know in comment to current post :) ...&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;EM&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin" lang=EN&gt;&lt;FONT size=3&gt;These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;EM&gt;&lt;SPAN style="FONT-STYLE: normal; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-style: italic; mso-bidi-font-weight: bold" lang=EN&gt;&lt;FONT size=3&gt;Gedas Busniauskas&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;EM&gt;&lt;SPAN style="FONT-STYLE: normal; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-style: italic; mso-bidi-font-weight: bold" lang=EN&gt;&lt;FONT size=3&gt;Microsoft Lithuania&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-style: italic; mso-bidi-font-weight: bold" lang=EN&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN" lang=EN&gt;&lt;FONT size=3&gt;Microsoft Customer Service and Support (CSS) EMEA&lt;/FONT&gt;&lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9894944" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nav_developer/archive/tags/C_2F00_AL/default.aspx">C/AL</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/NAV+2009/default.aspx">NAV 2009</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Transformation/default.aspx">Transformation</category></item><item><title>Upgrading to Dynamics NAV 2009</title><link>http://blogs.msdn.com/nav_developer/archive/2009/05/18/upgrading-to-dynamics-nav-2009.aspx</link><pubDate>Mon, 18 May 2009 17:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9625308</guid><dc:creator>jvukovic</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nav_developer/comments/9625308.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nav_developer/commentrss.aspx?PostID=9625308</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Upgrade procedure to Dynamics NAV 2009 is not very different from upgrade procedures we had in previous versions,&amp;nbsp;but some differences do apply, depending on what we want to achieve with the upgrade.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;First scenario&lt;/B&gt; is executables only upgrade, which is the same as traditional executables upgrade in NAV. That means upgrading classic NAV client to NAV 2009 version by opening previous database versions with new client, and selecting yes when prompted to convert database, without any object changes or data transfer. Or alternatively, creating a new database with NAV 2009 client, and restoring a backup of customer's database. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This will, as before, upgrade the version of executables running NAV to 2009 version (builds 6.0 and higher) and create necessary system tables, but this will not automatically open up for using new NAV 2009 functionality (like RTC client or Web Services). Running the first scenario is a mandatory part of any upgrade scenario, &lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;just as it was in previous versions.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Beware of few issues that can rise from this scenario, see the link below for description.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;&lt;A href="http://blogs.msdn.com/nav_developer/archive/2009/05/08/upgrading-older-databases-to-nav-2009-runtime.aspx" mce_href="http://blogs.msdn.com/nav_developer/archive/2009/05/08/upgrading-older-databases-to-nav-2009-runtime.aspx"&gt;http://blogs.msdn.com/nav_developer/archive/2009/05/08/upgrading-older-databases-to-nav-2009-runtime.aspx&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Another scenario&lt;/B&gt; is doing an executable upgrade that would open up for using Web services, but would not include any object upgrade or data transfer.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This is where 3-tier scenario enters stage and a Dynamics NAV server should be set up and connected to the database (this is the normal installation/setup process of the service). Dynamics NAV Web service should also be installed, see Dynamics NAV documentation for installation and setup of different components.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;http://msdn.microsoft.com/en-us/library/dd301130.aspx&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;To be able to use Web Services after doing an upgrade of executables and setting up a NST and Web service, one must also import and populate web service form (810) from a NAV 2009 client. This will open up for exposing codeunits (and also pages, but at this stage, pages are not yet present in database).&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;To further enable using RTC, one should also import tables 9050-9060, these are cue tables used in role centers of RTC. If you are creating and running custom Role Center pages, remember to create a record in each table by specifying any value as primary key (or follow code examples from standard Role Center pages that will insert a record if table is empty). A record in any of these tables will be automatically inserted when using standard NAV Role Page (based on that table).&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In addition, reports should be 'transformed' to add RDLC layer and forms should be transformed to pages. You can also run reports with classic engine form RTC (that is run classic NAV report in RTC), in which case no object upgrade is necessary for reports. Note though, to run reports with classic engine on RTC client, each machine running RTC client (and classic reports) needs to have Classic client installed as well.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Furthermore, Role Center pages should be created or standard ones imported from NAV 2009 client (pages in range 9000-9020). Finally, PROFILE table (table 2000000072) should be populated with standard (or custom) profiles,&amp;nbsp;and role center pages tied to these.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Last, but not least, you must make sure the existing code is modified to run&amp;nbsp;in both scenarios (see MSDN documentation on&amp;nbsp;code considerations for NAV 2009).&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;However, the job needed in this last scenario (specially transforming forms and reports) is not much different than using &lt;B style="mso-bidi-font-weight: normal"&gt;full database upgrade&lt;/B&gt; . In full upgrade version, objects in standard and custom version of NAV (version we are upgrading) would be merged with standard NAV 2009 objects to create custom NAV 2009 database. Note, all forms in standard NAV 2009 version are transformed to pages, so it is advisable to run Form transformation to create pages, once forms are merged to NAV 2009 object version. Also, one should 'upgrade' reports to add RDLC layer, once custom reports are merged to NAV 2009 version.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;No data transfer would occur from W1 5.0 to W1 NAV 2009 version, as there are no changes to table structure from 5.0 version. Upgrading from earlier version would still imply data transfer using Upgrade Toolkit.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards, &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Jasminka Vukovic&lt;/P&gt;
&lt;P&gt;Microsoft Dynamics NO&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Microsoft Customer Service and Support (CSS) EMEA&lt;/P&gt;&lt;/FONT&gt;&lt;/o:p&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9625308" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/NAV+2009/default.aspx">NAV 2009</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Web+Services/default.aspx">Web Services</category></item><item><title>Beware the SQL Index property on NAV 5.0 SP1</title><link>http://blogs.msdn.com/nav_developer/archive/2009/04/10/beware-the-sql-index-property-on-nav-5-0-sp1.aspx</link><pubDate>Fri, 10 Apr 2009 16:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543296</guid><dc:creator>lalake</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nav_developer/comments/9543296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nav_developer/commentrss.aspx?PostID=9543296</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The discussion of the changes starting with Microsoft Dynamics NAV version 5 regarding the&amp;nbsp;use of&amp;nbsp;Dynamic cursors has already been addressed in the article titled "Cursor Types" on the SE Blog - &lt;A href="http://blogs.msdn.com/microsoft_dynamics_nav_sustained_engineering/"&gt;http://blogs.msdn.com/microsoft_dynamics_nav_sustained_engineering/&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;However, we are seeing more and more cases where the use of the SQL Index property in NAV 5.0 SP1 is causing performance issues, so the purpose of this blog is to explain in more detail&amp;nbsp;from an application perspective how this property can affect performance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;From version 5.0 we are using Dynamic cursors, which means that SQL server will tend to choose an index that fits the ORDER BY clause more than the WHERE clause. This is not a problem as long as there is no conflict between the ORDER BY and the WHERE clause. This is where the SQL Index property comes in.&lt;BR&gt;&lt;BR&gt;SQL server should be able to choose the optimal index IF we create an index which matches the ORDER BY or the filter/range perfectly. NAV constructs the ORDER BY based on the NAV Key specification not the SQL Index specification. If a SQL Index value is specified on the NAV key and the fields do not exactly match the fields and the order in which they were specified in the Key, then there could be a conflict between the ORDER BY and the WHERE clauses.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;How does the issue present itself in the application? &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;These are just a couple of examples we have seen of the impact the SQL Index specification can have on the application…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Poor performance on large tables like Ledger Entry tables, if a user selects Sort on the form and changes from the primary key to a secondary key which has a SQL Index specification.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Using the RunFormView and RunFormLink property of a form…If the RunFormView is set to a non-primary key, &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;SQL might not choose the first key matching the RunFormView if that key has a SQL Index specification. Depending on the keys defined on the table, there may not be another adequate key available, so a suboptimal index may be used. The ORDER BY&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;may &lt;/SPAN&gt;no longer match the WHERE clause (RunFormLink), resulting in very poor performance loading the form.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Performance problems when SETCURRENTKEY/SETRANGE is used in code and the key specified has a SQL Index specification that does not match the key or the filters entered (WHERE clause). &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;************&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;We are seeing issues mainly with customers who have upgraded to 5.0 SP1 from 5.0, because there were values specified for SQL Index&amp;nbsp;in many tables&amp;nbsp;in the base product in 5.0. Some other customers on pre-5.0 versions might also have issues if someone has done performance tuning on their database. In earlier version of NAV, SQL Index was used to improve performance in certain scenarios.&amp;nbsp;&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;The recommendation is that the use of the SQL Index specification should be limited to very specific situations where thorough testing shows performance improvement. In the vast majority&amp;nbsp;of scenarios, SQL will make the correct choice of Index, so the SQL Index specification is not needed and can actually cause&amp;nbsp;poor performance.&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;For more information on identifying these problematic queries, please see the SE Blog post mentioned at the top of this article.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;Laura K. Lake&lt;/P&gt;
&lt;P&gt;Microsoft Dynamics NA&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Microsoft Customer Service and Support (CSS) North America&lt;/P&gt;
&lt;P&gt;These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9543296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Upgrading Application Objects - Tips</title><link>http://blogs.msdn.com/nav_developer/archive/2009/01/06/upgrading-application-objects-tips.aspx</link><pubDate>Tue, 06 Jan 2009 16:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9285467</guid><dc:creator>lalake</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nav_developer/comments/9285467.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nav_developer/commentrss.aspx?PostID=9285467</wfw:commentRss><description>&lt;P&gt;Some&amp;nbsp;partners use the &lt;SPAN class=KeywordHighlight id=#h12&gt;Merge&lt;/SPAN&gt; tool in the NAV Developer Toolkit&amp;nbsp;to attempt to &lt;SPAN class=KeywordHighlight id=#h13&gt;merge&lt;/SPAN&gt; the FULL set of objects from the old and new versions. This is not necessary and&amp;nbsp;often will cause more problems than it is worth.&lt;/P&gt;
&lt;P&gt;For the purpose of discussion, let's say that you are upgrading a database from version 3.70 to 5.0 SP1. &lt;/P&gt;
&lt;P&gt;One common error that occurs is something like this...&lt;/P&gt;
&lt;P&gt;Your program license does not permit you to delete the IC Partner Code field in the &lt;X&gt;table. &lt;/P&gt;
&lt;P&gt;The IC Partner Code field is a field that did not exist in 3.70 but has been added to the 5.0 SP1 database. Most often what we find is that partners are mistakenly trying to import the merged objects into the Customer's database when they receive errors like this. The new fields for 5.0 SP1 do not exist in the customer's database. You will not be able to import the merged text file that you created from the Developer's &lt;SPAN class=KeywordHighlight id=#h10&gt;Toolkit&lt;/SPAN&gt; into your customer's database. You must first import the text file into a base Cronus 5.0 SP1 database. Once the import has completed successfully, you will then export all the objects from this database as an fob file, and then you will be able to import the fob into your customer's database. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;These program license errors also occur if the object merge is not handled correctly. The main thing to keep in mind is that there will be fields that existed in 3.70 that do not exist in 5.0 SP1 and new fields in 5.0 SP1 that did not exist in 3.70.&amp;nbsp;A partner&amp;nbsp;license will not permit you to delete or create fields in the NAV reserved range. However, this SHOULD NOT be a problem if the object &lt;SPAN class=KeywordHighlight id=#h14&gt;merge&lt;/SPAN&gt; is&amp;nbsp;done correctly. Keep in mind that if there&amp;nbsp;have been NO modifications to&amp;nbsp;an object, then there is no need to import a merged version of that&amp;nbsp;object into 5.0 SP1. Any data from 3.70 that needs to be converted will be handled during the data conversion part of the upgrade process. When you run step 1 of the &lt;SPAN class=KeywordHighlight id=#h16&gt;upgrade&lt;/SPAN&gt; &lt;SPAN class=KeywordHighlight id=#h17&gt;toolkit&lt;/SPAN&gt;, the data that needs to be converted will be moved over to temporary tables and then converted during step 2.&lt;BR&gt;&lt;BR&gt;Concentrate on your modified objects. If you are going to use the NDT to perform the &lt;SPAN class=KeywordHighlight id=#h18&gt;merge&lt;/SPAN&gt;, try working with only the modified set of objects rather than trying to &lt;SPAN class=KeywordHighlight id=#h19&gt;merge&lt;/SPAN&gt; every object in the database. As a matter of fact, it will often be faster to manually re-enter your modifications in the base 5.0 SP1&amp;nbsp;database than to try to track down all of the errors that can occur with the &lt;SPAN class=KeywordHighlight id=#h20&gt;merge&lt;/SPAN&gt;. One option is to use a text compare tool to compare the base 3.70 unmodified table to your modified one, then manually copy and paste your modifications into 5.0SP1. The NDT function Compare Two Versions works well for this purpose. TIP:&amp;nbsp;Make sure&amp;nbsp;before you do a text compare&amp;nbsp;that the language layers in the "Old Base Version" match the "Current Custom Version". This will prevent having nearly every object show&amp;nbsp;differences&amp;nbsp;in the Compare Tool due to captions...&lt;/P&gt;
&lt;P&gt;Open a clean Cronus&amp;nbsp;database for your Old Base Version.&lt;BR&gt;Go to Tools/Object Designer.&lt;BR&gt;Go to Tools/&lt;SPAN class=KeywordHighlight id=#h62&gt;Language&lt;/SPAN&gt; Module/Export&lt;BR&gt;Select a file name on your computer for the export in case you should need it at some time in the future.&lt;BR&gt;Select one of the languages that you do not want and then be sure to click the Delete &lt;SPAN class=KeywordHighlight id=#h63&gt;Language&lt;/SPAN&gt; text box. Select OK.&lt;BR&gt;Repeat for each of the languages that you do not need.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Another thing to keep in mind when using the &lt;SPAN class=KeywordHighlight id=#h21&gt;Merge&lt;/SPAN&gt; Tool in the Developer &lt;SPAN class=KeywordHighlight id=#h22&gt;Toolkit&lt;/SPAN&gt; is that you usually cannot&amp;nbsp;just Accept All Changes with a set of customized objects, because there are almost always conflicts in code that must be resolved manually. Many developers prefer to use the Compare tool in the &lt;SPAN class=KeywordHighlight id=#h23&gt;toolkit&lt;/SPAN&gt; and then copy and paste the changes manually into the new version. Compare and &lt;SPAN class=KeywordHighlight id=#h24&gt;Merge&lt;/SPAN&gt; is a tool for developers to use as they see fit, but it is not flawless, so you should always check the suggested changes and resolve any conflicts manually.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;Laura K. Lake&lt;/P&gt;
&lt;P&gt;Microsoft Dynamics NA&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Microsoft Customer Service and Support (CSS) North America&lt;/P&gt;
&lt;P&gt;These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9285467" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Compare+and+Merge/default.aspx">Compare and Merge</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Merge+Tool/default.aspx">Merge Tool</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/NDT/default.aspx">NDT</category></item><item><title>Error - Cannot create more than one clustered index on table</title><link>http://blogs.msdn.com/nav_developer/archive/2008/10/17/error-cannot-create-more-than-one-clustered-index-on-table.aspx</link><pubDate>Fri, 17 Oct 2008 22:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9003579</guid><dc:creator>lalake</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/nav_developer/comments/9003579.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nav_developer/commentrss.aspx?PostID=9003579</wfw:commentRss><description>&lt;P&gt;This post describes one scenario in which this error occurs. There may be others.&lt;/P&gt;
&lt;P&gt;In the late 4.0 versions of the &lt;SPAN class=KeywordHighlight id=#h14&gt;NAV&lt;/SPAN&gt; executables, all tables in &lt;SPAN class=KeywordHighlight id=#h15&gt;NAV&lt;/SPAN&gt; had a clustered index created on SQL for the primary key (Index 0).&lt;BR&gt;However, the table objects in 4.0 versions did not have the Clustered property set on any of the keys.&lt;BR&gt;It was also possible on 4.0 to toggle that property (on/off) and &lt;SPAN class=KeywordHighlight id=#h16&gt;NAV&lt;/SPAN&gt; would allow you to leave the table with none of the keys flagged as clustered, but the primary index on SQL remained clustered.&lt;BR&gt;&lt;BR&gt;In the 5.0 versions, this behavior has changed. It is no longer possible to modify a table object to turn off the Clustered property on all keys. If you do this, save and compile the table, and then go back into designer and view keys, you will see that the 5.0 (and SP1) client has automatically turned on the Clustered property on the primary key. It is not possible in 5.0 to create a table with no clustered index.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;So, consider a scenario where you have a 4.0 database that has been converted to 5.0 SP1 executables. This is usually done one of two ways...&lt;/P&gt;
&lt;P&gt;1) Open the 4.0 database with the 5.0 SP1 executable and click Ok to convert&lt;BR&gt;2) Create a new database with the 5.0 SP1 executable and restore the 4.0 database backup using the &lt;SPAN class=KeywordHighlight id=#h28&gt;NAV&lt;/SPAN&gt; Client.&lt;BR&gt;&lt;BR&gt;With 5.0 SP1, using either of these two methods, the Clustered property on the 4.0 object's primary key&amp;nbsp;is automatically flagged.&lt;/P&gt;
&lt;P&gt;If for any reason a 4.0 table object is later imported into the converted database, you end up with a situation where the clustered index remains on SQL, but the table object no longer has the Clustered property flagged. This doesn't cause any immediate problem, but let's say you later want to do a full object&amp;nbsp;upgrade to 5.0 SP1 objects.&amp;nbsp;In step 8 of the Upgrade Quickguide, you are instructed to import the new customized objects created in the compare and merge process. Some of the 5.0 SP1 table objects, for example Sales Header, have had the clustered index changed to a secondary key. When these tables are imported into the database, NAV will not drop the primary clustered index but will try to create the secondary clustered index, triggering the above error. &lt;/P&gt;
&lt;P&gt;The workaround for this issue is to go into the table object in design mode and flag the primary key as clustered, then try importing the 5.0 SP1 table object again. Because the Clustered property is set, NAV will drop and recreate the primary&amp;nbsp;key (index on SQL) before creating the secondary clustered index.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Laura K. Lake&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Microsoft Dynamics NA&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Microsoft Customer Service and Support (CSS) North America&lt;/P&gt;
&lt;P&gt;These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9003579" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nav_developer/archive/tags/Upgrade/default.aspx">Upgrade</category><category domain="http://blogs.msdn.com/nav_developer/archive/tags/SQL/default.aspx">SQL</category></item></channel></rss>