<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Developing for Dynamics GP</title><subtitle type="html">by David Musgrave (Australia) and the Microsoft Dynamics GP Developer Support Team (USA)</subtitle><id>http://blogs.msdn.com/developingfordynamicsgp/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/developingfordynamicsgp/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-11-11T09:00:00Z</updated><entry><title>Do we really want Windows Authentication for Microsoft Dynamics GP?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/09/do-we-really-want-windows-authentication-for-microsoft-dynamics-gp.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/09/do-we-really-want-windows-authentication-for-microsoft-dynamics-gp.aspx</id><published>2009-12-09T01:00:00Z</published><updated>2009-12-09T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;Over the years, I have seen many requests for Windows Authentication support for Microsoft Dynamics GP, and I have to say I have mixed feelings about it. In theory, it sounds good, but in practice it may be a threat to your customer's financial information security.&lt;/P&gt;
&lt;P&gt;Regardless of authentication method, users will still have to select a company to access which defeats the purpose of having a single sign-on.&lt;/P&gt;
&lt;P&gt;If we have true Windows Authentication, then a workstation left&amp;nbsp;unattended without&amp;nbsp;being locked, could be used to access the financial system without the additional level of security of requiring a login.&amp;nbsp; Also, if Windows Authentication is used, the password will not be encrypted (see article below).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The encryption of the passwords is what prevents access to the financial data using external tools to access the SQL Server.&amp;nbsp; Having an encrypted password means that you must use the Microsoft Dynamics GP application to access the data and so are then subject to the application's security system.&amp;nbsp;You cannot bypass the application level security as the password will not work from an external tool.&lt;/P&gt;
&lt;P&gt;When a customer asks for Windows Authentication, I think we should not apologize and say that it is not supported.&amp;nbsp;&amp;nbsp;Instead we should sell the benefits of having an extra level of security provided by SQL Server Authentication with encrypted passwords.&amp;nbsp; This extra level will protect the customer's valuable financial data.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; There are some third party ISV solutions which can synchronize the SQL user names and passwords with the Windows user names and passwords.&amp;nbsp; While this simplifies the system by not having to remember more than once password, it is not true Windows Authentication.&lt;/P&gt;
&lt;P&gt;For more information related to this topic, have a look at the following article:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A title="Why does Microsoft Dynamics GP encrypt passwords?" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/10/02/why-does-microsoft-dynamics-gp-encrypt-passwords.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/10/02/why-does-microsoft-dynamics-gp-encrypt-passwords.aspx"&gt;Why does Microsoft Dynamics GP encrypt passwords?&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;Post a comment and let me know what you think?&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934565" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Security" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Security/default.aspx" /><category term="Application" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Application/default.aspx" /><category term="SQL" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/SQL/default.aspx" /><category term="Passwords" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Passwords/default.aspx" /><category term="Encryption" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Encryption/default.aspx" /></entry><entry><title>What is the A4 Chunk?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/07/what-is-the-a4-chunk.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="1995" href="http://blogs.msdn.com/developingfordynamicsgp/attachment/9933280.ashx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/07/what-is-the-a4-chunk.aspx</id><published>2009-12-07T01:00:00Z</published><updated>2009-12-07T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;Recently on the newsgroups, I responded to two separate questions on the same day asking about handling A4 size paper with Microsoft Dynamics GP.&amp;nbsp; So I thought a post about the A4 chunk would be helpful.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Background&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Before the age of &lt;A title="Wikipedia - Laser Printer" href="http://en.wikipedia.org/wiki/Laser_printer" target=_blank mce_href="http://en.wikipedia.org/wiki/Laser_printer"&gt;laser&lt;/A&gt; &amp;amp; &lt;A title="Wikipedia - Inkjet Printer" href="http://en.wikipedia.org/wiki/Inkjet_printer" target=_blank mce_href="http://en.wikipedia.org/wiki/Inkjet_printer"&gt;inkjet&lt;/A&gt; printers (and after the &lt;A title="Wikipedia - Daisy Wheel Printer" href="http://en.wikipedia.org/wiki/Daisy_wheel_printer" target=_blank mce_href="http://en.wikipedia.org/wiki/Daisy_wheel_printer"&gt;daisy wheel&lt;/A&gt; and &lt;A title="Wikipedia - Golf Ball Printer" href="http://en.wikipedia.org/wiki/Golf_ball_printer" target=_blank mce_href="http://en.wikipedia.org/wiki/Golf_ball_printer"&gt;golf ball&lt;/A&gt; printers) the most common type of printer was the &lt;A title="Wikipedia - Dot Matrix Printer" href="http://en.wikipedia.org/wiki/Dot_matrix_printer" target=_blank mce_href="http://en.wikipedia.org/wiki/Dot_matrix_printer"&gt;dot matrix&lt;/A&gt;&amp;nbsp;printer. While dot matrix printers are capable of printing graphics or using graphic fonts, they were very slow when used this way.&amp;nbsp; Historically, the dot matrix printer was used with a built in font which was non proportional (fixed width) and of a fixed style (eg.&amp;nbsp;Courier, Helvetica, Times).&amp;nbsp; If you had a good printer, you could print those fonts in &lt;STRONG&gt;bold&lt;/STRONG&gt; and/or &lt;EM&gt;italic&lt;/EM&gt;.&amp;nbsp; The printers could printer either 10 (Pica), 12 (Elite)&amp;nbsp;or 17 (Condensed)&amp;nbsp;characters per inch (CPI) across the page and either 6 or 8 lines per inch (LPI) down the page.&amp;nbsp; Unless you were lucky enough to have a wide carriage printer, your printer could print 8 inches wide (80 characters in 10&amp;nbsp;CPI mode ... the width of a text screen).&amp;nbsp; The standard size of paper for this type of printer was 8.5 inches wide by 11 inches long.&amp;nbsp; Sometimes it was a little wider and had tear-off sprocket holes... these were the holes on both sides of the paper that allowed it to be pulled through the printer.&lt;/P&gt;
&lt;P&gt;So .... why the history lesson?&lt;/P&gt;
&lt;P&gt;Well, because that standard size for computer paper became the standard size for paper in the USA, and is known as US Letter.&amp;nbsp; OK, it might be possible that the paper size came first and the printers were made to match it. &lt;/P&gt;
&lt;P&gt;On the other hand: A4 is an international standard (ISO 216) based on having an aspect ratio based on the square root of 2 (√2), or approximately 1:1.4142. The really cool thing about this is that if you fold or cut&amp;nbsp;a piece of paper in half across its long side, the resulting sheet will have the exact same aspect ratio (just rotated 90 degrees).&amp;nbsp; If you half an A4 sheet, you get A5.&amp;nbsp; If you join&amp;nbsp;two A4 sheets together you get A3.&amp;nbsp;A4 size paper is the most common and is used in most countries outside of North America.&amp;nbsp; Its dimensions&amp;nbsp;in metric measurements are 210 × 297&amp;nbsp;mm.&lt;/P&gt;
&lt;P&gt;For more information, you can see what Wikipedia says on its &lt;A title="Wikipedia - Paper size" href="http://en.wikipedia.org/wiki/Paper_size" target=_blank mce_href="http://en.wikipedia.org/wiki/Paper_size"&gt;Paper size&lt;/A&gt; entry.&amp;nbsp; The following diagram is from the Wikipedia page:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 439px; HEIGHT: 599px" title="A4 Paper Size" alt="A4 Paper Size" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9933288/original.aspx" width=439 height=599 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9933288/original.aspx"&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;HR style="WIDTH: 100%; HEIGHT: 2px"&gt;

&lt;P mce_keep="true"&gt;&lt;STRONG&gt;History&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Prior to version 7.00 of Great Plains Dynamics and eEnterprise, paper sizes were not a major issue.&amp;nbsp;This was because almost all reports were text based and were using the&amp;nbsp;&lt;STRONG&gt;Best Text Fit&lt;/STRONG&gt; option.&amp;nbsp; This meant that when a report was printed the font used would be selected to ensure that the content to be printed would fit onto the printable area of the paper being used (based on paper size and the&amp;nbsp;printer&amp;nbsp;driver's margin settings for non-printable area).&amp;nbsp;This automatically adjusting behaviour meant that most reports would work on either of the two main paper sizes without modifications.&lt;/P&gt;
&lt;P&gt;With version 7.00 a number of reports which were previously text reports were converted to graphic reports and a number of new reports added as graphic reports.&amp;nbsp; Graphic reports have a fixed size and do not have the option&amp;nbsp;to automatically resize like a&amp;nbsp;text report&amp;nbsp;using the&amp;nbsp;Best Text Fit option.&amp;nbsp; So, graphic reports which have a layout based on US Letter sized paper do not fit well on A4 sized paper.&amp;nbsp; Here is a summary of the paper sizes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;US Letter is 8.5"&amp;nbsp;(216mm) wide by 11" (279mm) high.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;A4 Paper&amp;nbsp; is 8.27" (210mm) wide by 11.69" (297mm) high.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As you can see US Letter is wider and shorter than A4 paper.&amp;nbsp; So in practical terms, if we look at the &lt;STRONG&gt;SOP Blank Invoice Form&lt;/STRONG&gt;,&amp;nbsp;when the&amp;nbsp;US Letter version is printed on A4 paper, it&amp;nbsp;will lose the right hand edge and the vertical lines will not join to the footer section to close the "boxes".&lt;/P&gt;
&lt;P mce_keep="true"&gt;To help minimise the amount of report modifications that would be needed for an A4 based installation, a patching chunk was created to adjust graphic reports and some non landscape text reports so that the right hand edge does not have characters cut off.&amp;nbsp; For graphic reports which have vertical lines, the lines were extended by 50 pixels to compensate for the longer paper size.&amp;nbsp; This patching chunk is known as the A4 chunk (A4.CNK) and once installed it updates some 165 (approx.) reports in the core Dynamics.dic application dictionary.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The A4 chunk was original developed for Australian and New Zealand installations for v7.00 by the now defunct Asia Pacific Global Development Team&amp;nbsp;which I was part of when I first joined Microsoft.&amp;nbsp;The A4 chunk is now available for most country installations that would use A4 paper, United Kingdom, Australia, New Zealand, Singapore, South Africa, etc.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The following Knowledge Base (KB) article discusses the A4 chunk as it is a standard part of the Australian install:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A title="Information about the localized code for the Australian version of Microsoft Great Plains (KB 910128)" href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;en-us;910128" target=_blank mce_href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;en-us;910128"&gt;&lt;FONT color=#006ff7&gt;Information about the localized code for the Australian version of Microsoft Great Plains (KB 910128)&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;IMG style="WIDTH: 15px; HEIGHT: 18px" title="Secure Link" alt="Secure Link" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx" width=15 height=18 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx"&gt;&lt;/P&gt;
&lt;HR style="WIDTH: 100%; HEIGHT: 2px"&gt;

&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Questions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;So now that we know all about the different paper sizes and why the A4 chunk was created, what were the questions asked that prompted this article.&amp;nbsp;Well, below are a list of frequently asked questions, including the ones from the newsgroups.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Q: When the A4 chunk is installed, I can't see it in Dynamics.set, why not?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; The A4 chunk is a patching chunk that updates the Dynamics.dic file directly, you will not see it once it has been incorporated into the Dynamics.dic file.&amp;nbsp; This is similar to how ??ERR.CNK files are used to update language and terminology.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;BR&gt;&lt;STRONG&gt;Q: What files are updated by the A4 chunk?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; The A4 chunk updates the Dynamics.dic file only.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;BR&gt;Q: When I look at my&amp;nbsp;report&amp;nbsp;in Report Writer it has not been changed, why not?&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; The A4 chunk does not update the reports.dic at all.&amp;nbsp; If a report already exists as a modified report it will not be updated by the A4 chunk.&amp;nbsp; You would need to delete the modified report and then modify the original report again to get the updated version.&amp;nbsp; Or you could manually update the report your self.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;BR&gt;Q: What changes does the A4 chunk make to reports?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; The changes vary depending on the report, the main changes are to shift the right hand columns toward the left a bit to allow for the narrower A4 page.&amp;nbsp; For graphic reports with vertical lines, the length of the lines is increased by 50 pixels to allow for the increase in page length.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;STRONG&gt;Q: How can I tell if the A4 chunk is installed on a system?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; There is no version number or build number that can tell you that the A4 chunk is installed. Probably the easiest method is to open the &lt;STRONG&gt;SOP Blank Invoice Form&lt;/STRONG&gt; and click on the first vertical line in the RH section.&amp;nbsp; This line actually starts in the PH section but is easy to click on in the RH section. If the size is 0, 455 it is US Letter.&amp;nbsp; If the size is 50 pixels longer, 0, 505 it is A4.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;Q: Does the A4 chunk help with reports in 3rd party products?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; No, the A4 chunk only updates the core Dynamics.dic application dictionary.&amp;nbsp; Reports for products contained in other add on dictionaries will still need manual modifications.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q: Can I have both US Letter and A4 reports on the same system at the same time?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Yes and no.&amp;nbsp; You can have US Letter and A4 reports active in the same system, however, you will either need to install separate clients into separate application folders, or use separate reports.dic files.&amp;nbsp; Most customers setup a US client folder and international client folder(s) as required.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Q: What reports are updated by the A4 chunk?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A:&lt;/STRONG&gt; Attached to this post is a A4Readme.txt file which contains a list for v10.0.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;I hope this article explains everything.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;08-Dec-2009:&lt;/STRONG&gt; Added Wikipedia links for the different types of printers.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9933280" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Dexterity" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Dexterity/default.aspx" /><category term="Report Writer" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Report+Writer/default.aspx" /><category term="APAC" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/APAC/default.aspx" /><category term="Application" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Application/default.aspx" /></entry><entry><title>Filtering eConnect Requester data</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/04/filtering-the-requester-econnect-out-table.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/04/filtering-the-requester-econnect-out-table.aspx</id><published>2009-12-03T17:00:00Z</published><updated>2009-12-03T17:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="Emily Halvorson" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="Emily Halvorson - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9597074/thumb.aspx" width=88 height=87 mce_srchttp: blogs.msdn.com photos developingfordynamicsgp images 9597074 thumb.aspx?&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;I wanted to tell you about a recent case I had where the Partner was trying to restrict the Microsoft Dynamics GP data they had selected with the eConnect Requester Setup Tool.&lt;/P&gt;
&lt;P&gt;They were first&amp;nbsp;importing some of their Sales Orders from an external system into GP with eConnect.&amp;nbsp; Then when they fulfilled and shipped the Order within GP, they used eConnect Outgoing Queue to make the updates available to the external system.&amp;nbsp; Their use of GP also includes manually entered Sales Orders and they did not want the updates to the manually entered Orders to be queued.&lt;/P&gt;
&lt;P&gt;So, the way the Requesters work is that boxes checked on each SQL table in the Requester Setup Tool cause a SQL trigger to be created when you click the Update button&amp;nbsp;in the Tool.&amp;nbsp; These triggers will fire upon an insert, update, or delete operation on the SQL table and cause rows to be created in the eConnect_Out table.&amp;nbsp;&amp;nbsp;The eConnect Outgoing Service queries the eConnect_Out table on a regular basis and pulls the data into&amp;nbsp;your queue.&amp;nbsp; You can look at the triggers in SQL Server Management Studio by right-clicking on the trigger and Script Trigger as Create to New Query Editor Window.&lt;/P&gt;
&lt;P&gt;If you have some data values that&amp;nbsp;distinguish the GP entered ones from the eConnect ones, you can use that to filter.&amp;nbsp; For example, if you use different Document Numbers in the eConnect Sales Orders than you do in the manually entered ones you could put an &lt;EM&gt;if&lt;/EM&gt; statement before the &lt;EM&gt;insert into eConnect_Out...&lt;/EM&gt; statement to make sure that the rows are only created that you want created.&amp;nbsp; The following example assumes we want Sales Orders with a Document Number starting with the letters "EC"&lt;/P&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Example eConnect_Sales_TransactionSOP10200_UpdateTrigger change &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 150px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S1&gt;if (@SOPTYPE = 2 and @SOPNUMBE like 'EC%')
begin
    insert into eConnect_Out(
    .
    .
    .
end

&lt;/TEXTAREA&gt; &lt;/DIV&gt;
&lt;P mce_keep="true"&gt;The dots in the example are the rest of the insert statement that is already in the trigger, and you put your &lt;EM&gt;end&lt;/EM&gt; statement after that.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;One last thing: if you are using eConnect to&amp;nbsp;update the Sales Orders instead of updating with&amp;nbsp;GP, you will need to set the RequesterTrx element to 1 (one) for this to work.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Enjoy!&lt;/P&gt;
&lt;P mce_keep="true"&gt;Emily&lt;BR&gt;Dynamics GP Developer Support&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9931558" width="1" height="1"&gt;</content><author><name>emily - msft</name><uri>http://blogs.msdn.com/members/emily+-+msft.aspx</uri></author><category term="eConnect" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/eConnect/default.aspx" /><category term="Row Level Filtering" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Row+Level+Filtering/default.aspx" /><category term="SQL" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/SQL/default.aspx" /><category term="Triggers" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Triggers/default.aspx" /></entry><entry><title>More on Windows 7, bitmap fonts and DPI settings</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/02/more-on-windows-7-bitmap-fonts-and-dpi-settings.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/02/more-on-windows-7-bitmap-fonts-and-dpi-settings.aspx</id><published>2009-12-02T01:00:00Z</published><updated>2009-12-02T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;This post is a follow up to the previous post on the topic which discussed how you can use the registry editor to adjust the font files used for bitmap fonts to restore them to the default 100% DPI size.&amp;nbsp; If you have not read the previous post, please use the link below:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A title="Windows 7, bitmap fonts and Microsoft Dynamics GP" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/25/windows-7-bitmap-fonts-and-microsoft-dynamics-gp.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/25/windows-7-bitmap-fonts-and-microsoft-dynamics-gp.aspx"&gt;Windows 7, bitmap fonts and Microsoft Dynamics GP&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;As I hinted at in this previous post, any older applications that use bitmapped fonts such as &lt;STRONG&gt;MS Sans Serif&lt;/STRONG&gt;, &lt;STRONG&gt;MS Serif&lt;/STRONG&gt; and &lt;STRONG&gt;Courier&lt;/STRONG&gt; are likely to have this same issue.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have already explained the logic behind the change in behaviour for Windows 7 which can automatically set the DPI to 125% during the install.&amp;nbsp; What has not been explained is why the bitmap fonts&amp;nbsp;are not restored to 100% DPI when the DPI setting is changed back to 100% via the User Interface.&amp;nbsp; This is the subject of this post.&lt;/P&gt;
&lt;HR style="WIDTH: 100%; HEIGHT: 2px"&gt;

&lt;P mce_keep="true"&gt;How we see&amp;nbsp;Windows is controlled by two primary settings:&amp;nbsp; The resolution and the DPI setting.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;In Windows Vista (and&amp;nbsp;earlier)&amp;nbsp;the resolution could be changed for each user on a workstation, but the DPI setting was system based.&amp;nbsp; This means that a user did not really have full control of the settings for their profile and if another user changed the DPI setting, it would affect all users on that workstation.&amp;nbsp;&amp;nbsp;Changing the DPI setting&amp;nbsp;would require a reboot for the change to take effect and it would adjust the bitmap fonts as part of that change.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;So Windows 7 introduced a change to allow the DPI setting to be set on a per user basis (only requiring a logout and login to make the change).&amp;nbsp;&amp;nbsp;It is important to&amp;nbsp;note that the user based DPI setting only affects the scalable fonts which can be adjusted without a reboot.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The bitmap font DPI settings are still system based and would still require a reboot to change and would also affect all users on the workstation.&amp;nbsp; To avoid the now user based DPI setting from affecting other users in the system, the bitmaps fonts are no longer changed when adjusting DPI via the Display Control Panel applet.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The bitmap font size is&amp;nbsp;now set only once during the installation and not altered thereafter.&amp;nbsp;As we now understand, the initial DPI setting used during the install will control how the bitmap fonts are set.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I am researching if there is a way to make Windows 7 always default to 100% DPI during the installation, or a way to keep the bitmap fonts at 100% DPI size.&amp;nbsp; However, if you DO want the 125% DPI setting, you will then have the same issue but&amp;nbsp;the other way around.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Thanks to Peter Constable from the Windows 7 Development team for his input.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I hope this clarifies what is happening.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9930667" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Application" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Application/default.aspx" /><category term="Windows 7" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Windows+7/default.aspx" /><category term="Fonts" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Fonts/default.aspx" /></entry><entry><title>Checklist for creating a new Dexterity Window</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/30/checklist-for-creating-a-new-dexterity-window.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/30/checklist-for-creating-a-new-dexterity-window.aspx</id><published>2009-11-30T01:00:00Z</published><updated>2009-11-30T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;Today, we go back to basics. It is always good to make sure that we have the foundations handled properly.&amp;nbsp; When I teach the Dexterity, I always go through the standard checklist below for creating (or modifying) Dexterity windows.&lt;/P&gt;
&lt;P mce_keep="true"&gt;This checklist is valid for Dexterity when creating new windows or editing existing windows which will become alternate windows. It is also valid when using Modifier to modify existing windows.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Check the User Interface (UI)&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;There are User Interface Guidelines in Appendix F of the Dexterity Basics training manual (see links below).&amp;nbsp; These guidelines should be followed to ensure that your windows or changes to windows cannot be told apart from the original windows.&amp;nbsp; Some common issues I find are:&lt;BR&gt;&amp;nbsp;&lt;BR&gt;1) 3D line under the Window Control Area (Toolbar)&amp;nbsp;to cover the black line is missing, or the line is present, but has not been made wide enough to fully reach the right hand edge of the window.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;2) Buttons in the Window Control Area (Toolbar) are not separated by 2 pixels with a 3D vertical line (starting at vertical position 3 with length 16) between each button AND after the last button.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;3) When two fields are next to each other the borders create a double thick line between them.&amp;nbsp; To fix, click on the fields to the left and press Shift-Right Arrow to increase the size by 1 pixel.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;4) When creating Scrolling windows, turn the borders off for the fields in the scrolling window and draw new borders with the line tool.&amp;nbsp; Make sure that every drawn line is set to 2D Border. This will prevent the 1 white pixel of a vertical 3D line breaking up the horizontal lines.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Link Prompts&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;For the prompts to be "greyed out" when the field is disabled, hidden when the field is hidden or to show in a different style for a required field, the field must be linked to the prompt.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Link Lookups&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;For lookups to be be disabled when the field is disabled, or for the Ctrl-L keyboard shortcut to work, the field must be linked to the lookup button.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tab Sequence&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;To make your windows keyboard friendly, the tab sequence should include all fields as well as the main action buttons.&amp;nbsp; The first field in the sequence should be the first field on the window, which is usually the primary key field.&amp;nbsp; The tab sequence should then work right, across the fields in a column then down the lines to the end of the section.&amp;nbsp; Then if the window has more than one column, the tab sequence goes back to top of that column and works down.&amp;nbsp; When the end of the section is reached it starts back at the top left of the next section and repeats zig zagging its way through the fields. Once the last field is reached then it should go through the toolbar buttons and then finally any buttons at the side or bottom of the window.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; Remember to press &lt;EM&gt;Tab&lt;/EM&gt; in between each field when setting the tab sequence, otherwise the tab sequence will be reversed.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Position Window&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;You should position the window away from the top left corner.&amp;nbsp; If this window will be used with other windows, you can position it so that it will be visible or at least not completely hidden by the other windows.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resizing&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;If the field includes fields that can be resized, such as lists, scrolling windows, treeviews or listviews, you might want to change the window to use per field resizing and then define the behaviour wanted for ALL fields, prompts and lines.&amp;nbsp; Use the Ctrl-5 preview mode from window layout to test the resizing.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Compile&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Always compile all the code when you think you have finished.&amp;nbsp; Logical errors cannot always be avoided, but leaving syntax errors in code is completely avoidable.&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Everything you develop should be tested and tested and then tested again.&amp;nbsp; By the way... did I mention that you should test your code.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Here are the links for the Dexterity training materials (which include the UI guidelines):&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN id=Title&gt;&lt;A title="Dexterity Basics for Microsoft Dynamics GP 9.0" href="https://mbs.microsoft.com/customersource/training/trainingmaterials/student/course_gp9_dexbasic.htm?printpage=false" target=_blank mce_href="https://mbs.microsoft.com/customersource/training/trainingmaterials/student/course_gp9_dexbasic.htm?printpage=false"&gt;&lt;FONT color=#006ff7&gt;Dexterity Basics for Microsoft Dynamics GP 9.0&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;IMG style="WIDTH: 15px; HEIGHT: 18px" title="Secure Link" alt="Secure Link" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx" width=15 height=18 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx"&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN id=Title&gt;&lt;A title="Dexterity Integration for Microsoft Dynamics GP 9.0" href="https://mbs.microsoft.com/customersource/training/trainingmaterials/student/course_gp9_dexinte.htm?printpage=false" target=_blank mce_href="https://mbs.microsoft.com/customersource/training/trainingmaterials/student/course_gp9_dexinte.htm?printpage=false"&gt;&lt;FONT color=#006ff7&gt;Dexterity Integration for Microsoft Dynamics GP 9.0&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;IMG style="WIDTH: 15px; HEIGHT: 18px" title="Secure Link" alt="Secure Link" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx" width=15 height=18 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8771197/original.aspx"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; The latest materials are for v9.0, but the content is applicable to v10.0 and later.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;If you are new to Dexterity, this article will help you learn what you need:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;A title="Dex - How to get started with Dexterity" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/08/11/how-to-get-started-with-dexterity.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/08/11/how-to-get-started-with-dexterity.aspx"&gt;Dex - How to get started with Dexterity&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;Hope you find this best practice checklist useful.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9409586" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Dexterity" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Dexterity/default.aspx" /><category term="Modifier" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Modifier/default.aspx" /><category term="Best Practice" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Best+Practice/default.aspx" /></entry><entry><title>Running dag.exe on 9.0 Dynamics forms dictionary fails with runtime error at 86% complete</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/27/running-dag-exe-on-9-0-dynamics-forms-dictionary-fails-with-runtime-error-at-86-complete.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/27/running-dag-exe-on-9-0-dynamics-forms-dictionary-fails-with-runtime-error-at-86-complete.aspx</id><published>2009-11-27T01:00:00Z</published><updated>2009-11-27T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="Patrick Roth" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="Patrick Roth - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9020596/thumb.aspx" width=65 height=87 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9020596/thumb.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;A few months ago, a partner was attempting to create an Application.Dynamics.ModifiedForms.dll using the Dictionary Application Generator (dag.exe) against his 9.0 SP4 Dynamics forms dictionary.&lt;/P&gt;
&lt;P&gt;This failed for him.&amp;nbsp; Trying to determine if it was a "forms dictionary issue" or not, he renamed his Application.Dynamics.dll as a test and attempted to generate a new one using Dag.exe.&amp;nbsp; This also failed in the same manner but at a different spot.&lt;/P&gt;
&lt;P&gt;The partner logged a support incident that I took and after making sure that dag.exe ran successfully on my 9.0 SP2 system, I updated to 9.0 SP4 as well.&amp;nbsp; After doing so, I found I had the exact same issue.&lt;/P&gt;
&lt;P&gt;So that was nice -&amp;nbsp;at least I could replicate the issue.&lt;/P&gt;
&lt;P&gt;What we found was that generating the modified forms assembly using the command line:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Dag.exe 0 /F&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The Dag.exe would fail with a Microsoft Visual C++ runtime error at 86% complete.&lt;/P&gt;
&lt;P&gt;If we renamed the Application.Dynamics.dll and attempted to generate it again with the command line:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Dag.exe 0 /M&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Then the Dag.exe would fail with a Microsoft Visual C++ runtime error at 17% complete.&lt;/P&gt;
&lt;P&gt;After spending a good time debugging this in Visual Studio 2005, I was able to determine what was happening.&lt;/P&gt;
&lt;P&gt;Sometime after 9.0 SP2, two procedures&amp;nbsp;were introduced into the Dynamics.dic.&amp;nbsp; These procedures used parameters that included two new fields.&amp;nbsp; Unfortunately however, the fields themselves were not included in the update cnk file.&lt;/P&gt;
&lt;P&gt;While not causing any issues for the GP client - as I believe the new procedures would only be used for Latin American customers - the Dag.exe was finding the procedures and attempting to locate the new fields in the dictionary.&amp;nbsp; As they didn't exist, the runtime crashes on the first one it couldn't find.&lt;/P&gt;
&lt;P&gt;While very unusual for support to do, the workaround was for me to make a cnk file that contains the missing fields that would merge into the Dynamics.dic.&amp;nbsp; After giving the cnk file to the partner and merging it into his Dynamics.dic, his dag.exe would run to completion successfully.&lt;/P&gt;
&lt;P&gt;This issue is scheduled to be fixed in the next release - probably a tax release coming up.&amp;nbsp; In the meantime, if you run into this issue log a support case and mention that you need the MBSGP_53972.zip file to resolve this issue.&amp;nbsp; Also make sure you give your exact dictionary version 9.0.352 or 9.0.371 as the cnk file will alter your Dynamics.dic and they need to be the same version.&amp;nbsp; As this is a bug, you won't be charged for the case.&lt;/P&gt;
&lt;P&gt;Hope this helps,&lt;BR&gt;Patrick&lt;BR&gt;Developer Support&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925980" width="1" height="1"&gt;</content><author><name>Patrick Roth [MSFT]</name><uri>http://blogs.msdn.com/members/Patrick+Roth+%5bMSFT%5d.aspx</uri></author><category term="Developer Toolkit" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Developer+Toolkit/default.aspx" /><category term="Visual Studio Tools" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Visual+Studio+Tools/default.aspx" /><category term="Development Tools" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Development+Tools/default.aspx" /><category term="Exception" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Exception/default.aspx" /></entry><entry><title>Windows 7, bitmap fonts and Microsoft Dynamics GP</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/25/windows-7-bitmap-fonts-and-microsoft-dynamics-gp.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="384" href="http://blogs.msdn.com/developingfordynamicsgp/attachment/9926103.ashx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/25/windows-7-bitmap-fonts-and-microsoft-dynamics-gp.aspx</id><published>2009-11-25T01:00:00Z</published><updated>2009-11-25T01:00:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;I have a story to tell..... and it even has a happy ending.&lt;/P&gt;
&lt;P&gt;During the last week of August 2009, I was over in Sydney at the Microsoft Office in North Ryde for meetings and to&amp;nbsp;catch up with&amp;nbsp;my Australian based colleagues on the Asia Pacific support team for Microsoft Dynamics GP.&amp;nbsp; While there I downloaded the DVD images for Windows 7;&amp;nbsp; both the internal Microsoft IT Windows 7 Enterprise build and the Windows 7 Ultimate RTM build.&lt;/P&gt;
&lt;P&gt;When I returned home in early September, I rebuilt my laptop with Windows 7 using the internal Windows 7 Enterprise install.&amp;nbsp; I wrote about this at the time: &lt;A title="Windows 7 and Microsoft Dynamics GP" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/09/02/windows-7-and-microsoft-dynamics-gp.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/09/02/windows-7-and-microsoft-dynamics-gp.aspx"&gt;Windows 7 and Microsoft Dynamics GP&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;What I did not mention in the previous article is that I noticed that the font size in Microsoft Dynamics GP (and some other older applications) was incorrect.&amp;nbsp; Eventually (after two weeks of not being able to fix the font issue), I rebuilt my machine with the Windows 7 Ultimate install and the problem was gone.&amp;nbsp; At the time I believed that it was somehow related to the internal build only and so would not affect people outside of Microsoft.&amp;nbsp; Thus there was no reason to write about it publically on the blog.&lt;/P&gt;
&lt;P&gt;Here is an example of what I mean, using the main window of my favourite add on product, the &lt;A title="Support Debugging Tool for Microsoft Dynamics GP" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx"&gt;Support Debugging Tool for Microsoft Dynamics GP&lt;/A&gt;.&amp;nbsp; I am not biased really.... :-)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 402px; HEIGHT: 527px" title="Support Debugging Tool - Windows 7 font incorrect" alt="Support Debugging Tool - Windows 7 font incorrect" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9927109/original.aspx" width=402 height=527 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9927109/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The window should look like this:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 402px; HEIGHT: 525px" title="Support Debugging Tool - Windows 7 Font correct" alt="Support Debugging Tool - Windows 7 Font correct" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9927111/original.aspx" width=402 height=525 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9927111/original.aspx"&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;The issue affects the Dexterity "System" font used by Microsoft Dynamics GP. It has also shown up in some older applications which use the same font.&amp;nbsp; This font is actually the bitmap MS Sans Serif font at the Windows level but is called "System" in the Dexterity development environment. Most newer applications use fonts&amp;nbsp;as specified by the Window's themes and so do not have any issues.&amp;nbsp; Note there is a&amp;nbsp;font at the Windows level called "System", but that is not related to this issue.&lt;/P&gt;
&lt;P mce_keep="true"&gt;In the screenshots above, you will&amp;nbsp;notice that the prompts and fields on the window, which use the&amp;nbsp;MS San Serif&amp;nbsp;font, are displayed a couple of points bigger than they should be, this causes the writing to get cut off and the window to look ugly.&amp;nbsp; Also note that the fonts in the window title bar, the menu bar and the heading are the same size in both screen shots and that they are smoothed using ClearType... this is because they are using TrueType scalable fonts and not&amp;nbsp;a bitmapped font.&lt;/P&gt;
&lt;HR style="WIDTH: 100%; HEIGHT: 2px"&gt;

&lt;P mce_keep="true"&gt;Moving forward in time about 3 months.....&lt;/P&gt;
&lt;P mce_keep="true"&gt;I came across a &lt;A title="Font Size in Windows 7" href="http://www.microsoft.com/Businesssolutions/Community/Newsgroups/dgbrowser/en-us/default.mspx?dg=microsoft.public.greatplains&amp;amp;mid=6059065b-6f57-4a65-880c-da387190b9f5&amp;amp;sloc=en-us" target=_blank mce_href="http://www.microsoft.com/Businesssolutions/Community/Newsgroups/dgbrowser/en-us/default.mspx?dg=microsoft.public.greatplains&amp;amp;mid=6059065b-6f57-4a65-880c-da387190b9f5&amp;amp;sloc=en-us"&gt;newsgroup post&lt;/A&gt;&amp;nbsp;in which Andrew Cooper mentioned that the fonts on his system where bigger than they should be.&amp;nbsp; This sounded very familiar and&amp;nbsp;meant that the issue was not limited to inside Microsoft and so would need to be investigated again.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Below is a summary of what is happening and the details of the fix required. Thanks to Peter Constable of the Windows 7 Development team for helping explain what was happening.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Research showed that many users with high resolution monitors (particularly LCD flat screens) were running the monitors at lower resolutions than the native resolution of the screen. This was usually because at the native resolution, the fonts were becoming too small to read, so the users would decrease the resolution.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Windows&amp;nbsp;includes a facility to increase font&amp;nbsp;and window sizes while keeping the screen at the native resolution.&amp;nbsp; This is a much better method of increasing the font size as it can produce much smoother images by using many more, smaller pixels.&amp;nbsp;The really significant issue is, unlike CRT monitors, flat-panel LCD monitors have a fixed pixel size, or "resolution", and that when users change to a lower resolution (in order to increase text size) the system has to re-sample the lower-resolution display image into its fixed resolution causing a significant degradation in display quality: not just text looks worse, everything looks worse.&lt;/P&gt;
&lt;P mce_keep="true"&gt;A change was made for Windows 7, to set the screen resolution to the&amp;nbsp;monitor's native resolution&amp;nbsp;and if the screen is over a certain resolution to default the font&amp;nbsp;size 120&amp;nbsp;DPI (dots per inch). This is approximately 125% of normal 96 DPI (100%).&amp;nbsp;When the system defaults to 125% DPI it also adjusts the MS Sans Serif font to be bigger.&amp;nbsp; If the user then decides to set the DPI back to 100%, then TrueType fonts, which are scalable, adjust as expected. But the bitmap MS Sans Serif font does not: it remains at the larger size, hence our issue.&amp;nbsp;This&amp;nbsp;problem does not occur if Windows 7&amp;nbsp;keeps DPI at 100% when it is first installed.&lt;/P&gt;
&lt;P mce_keep="true"&gt;In my case, the internal Windows 7 Enterprise build had an appropriate video driver for my machine and was able to go to the native resolution (1920 x 1200) and default to 125% DPI.&amp;nbsp; As my machine is older, when I installed the Windows 7 Ultimate build, it did not have the video driver and so defaulted to a lower resolution at 100% DPI.&amp;nbsp; Once I installed the video driver from Windows Update, I was able to get to the native resolution&amp;nbsp;and remain at 100% DPI.&amp;nbsp; Because the initial setting was 100% DPI, the MS Sans Serif font was the correct size.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I realised that the issue is not an internal problem, but can occur on any Windows 7 system that has a high resolution monitor for which drivers can be found during the initial install and so default with 125% DPI. If the user returns to 100% DPI, the MS Sans Serif bitmap font will remain larger.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The solution took a while to find, but is really simple.&amp;nbsp; We just need to make some registry changes and reboot.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT color=red&gt;&lt;STRONG&gt;Note: The registry changes do not take effect until the system has been restarted. You MUST reboot after making the registry changes.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Registry setting HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\MS Sans Serif 8,10,12,14,18,24 is set to SSERIFF.FON on a system which started at 125% DPI. The setting is set to SSERIFE.FON on a system which started at 100% DPI.&amp;nbsp; Notice that one character of the file name changes from F to E.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The actual font files used might be different on Windows systems for other languages or code pages. See the table below for the file names:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;
&lt;TABLE border=1 cellSpacing=0 borderColor=#111111 cellPadding=3&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;125% DPI&amp;nbsp;font file &lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;100% DPI font file &lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;F&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;E&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;F&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;E&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;F&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;E&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;F&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;E&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;F&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSERIF&lt;STRONG&gt;E&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;F&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;E&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;F&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;E&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;F&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;E&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;F&lt;/STRONG&gt;874.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SSE&lt;STRONG&gt;E&lt;/STRONG&gt;874.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;While we are fixing the MS Sans Serif font, we can also fix the MS Serif and Courier fonts. These are the Registry settings MS&amp;nbsp;Serif 8,10,12,14,18,24 and Courier 10,12,15 values in the same registry key.&amp;nbsp;See the table below for the file names:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;
&lt;TABLE border=1 cellSpacing=0 borderColor=#111111 cellPadding=3&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;125% DPI&amp;nbsp;font file &lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;100% DPI font file &lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;125% DPI&amp;nbsp;font file &lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;100% DPI font file &lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;F&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;E&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;F&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;E&lt;/STRONG&gt;.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;F&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;E&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;F&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;E&lt;/STRONG&gt;E.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;F&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;E&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;F&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;E&lt;/STRONG&gt;G.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;F&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;E&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;F&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;E&lt;/STRONG&gt;R.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;F&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SERIF&lt;STRONG&gt;E&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;F&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COUR&lt;STRONG&gt;E&lt;/STRONG&gt;T.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SER&lt;STRONG&gt;F&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SER&lt;STRONG&gt;E&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;F&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;E&lt;/STRONG&gt;1255.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SER&lt;STRONG&gt;F&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SER&lt;STRONG&gt;E&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;F&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;E&lt;/STRONG&gt;1256.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SER&lt;STRONG&gt;F&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;SER&lt;STRONG&gt;E&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;F&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;COU&lt;STRONG&gt;E&lt;/STRONG&gt;1257.FON&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;To fix the system you need to change the settings to new file names (changing the appropriate letter from&amp;nbsp;F to E) and reboot.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT color=red&gt;&lt;STRONG&gt;Note: The registry changes do not take effect until the system has been restarted. You MUST reboot after making the registry changes.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Below are the contents of Font Fix.reg file to make the changes for an&amp;nbsp;English system:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT style="FONT-FAMILY: 'Courier New', courier, consolas, monospace; FONT-SIZE: 9pt"&gt;Windows Registry Editor Version 5.00&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style="FONT-FAMILY: 'Courier New', courier, consolas, monospace; FONT-SIZE: 9pt"&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]&lt;BR&gt;"MS Sans Serif 8,10,12,14,18,24"="SSERIFE.FON"&lt;BR&gt;"MS Serif 8,10,12,14,18,24"="SERIFE.FON"&lt;BR&gt;"Courier 10,12,15"="COURE.FON"&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;An archive of&amp;nbsp;the Font Fix.reg file for an English system is also provided as an attachment&amp;nbsp;at the bottom of&amp;nbsp;this post.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;While I have focussed on the MS Sans Serif&amp;nbsp;bitmap font (as this is the one used by Microsoft Dynamics GP) as well as the MS Serif and Courier fonts, this issue is likely to affect other bitmap fonts.&amp;nbsp;&amp;nbsp;Other&amp;nbsp;bitmap fonts&amp;nbsp;can be found in the&amp;nbsp;\Windows\Fonts folder as *.FON files and in the same registry location.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I hope you find this information helpful.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;02-Dec-2009:&lt;/STRONG&gt; Please see follow up post: &lt;A title="More on Windows 7, bitmap fonts and DPI settings" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/02/more-on-windows-7-bitmap-fonts-and-dpi-settings.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/12/02/more-on-windows-7-bitmap-fonts-and-dpi-settings.aspx"&gt;More on Windows 7, bitmap fonts and DPI settings&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;09-Dec-2009:&lt;/STRONG&gt; Further highlighting of the need to reboot after making registry changes.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926103" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Application" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Application/default.aspx" /><category term="Windows 7" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Windows+7/default.aspx" /><category term="Fonts" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Fonts/default.aspx" /></entry><entry><title>Accessing a Table Buffer when it is not passed as a parameter</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/23/accessing-a-table-buffer-when-it-is-not-passed-as-a-parameter.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/23/accessing-a-table-buffer-when-it-is-not-passed-as-a-parameter.aspx</id><published>2009-11-23T01:00:00Z</published><updated>2009-11-23T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;IMG style="WIDTH: 94px; HEIGHT: 94px" title="David Meego" hspace=10 alt="David Meego" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;This post is a follow up to the previous posts on the &lt;STRONG&gt;Three Trigger Technique&lt;/STRONG&gt;. If you have not read the posts explaining this technique, please use the links below:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A title="Using the Dexterity Three Trigger Technique Part 1" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/03/27/using-the-dexterity-three-trigger-technique-part-1.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/03/27/using-the-dexterity-three-trigger-technique-part-1.aspx"&gt;Using the Dexterity Three Trigger Technique Part 1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="Using the Dexterity Three Trigger Technique Part 2" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/03/30/using-the-dexterity-three-trigger-technique-part-2.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/03/30/using-the-dexterity-three-trigger-technique-part-2.aspx"&gt;Using the Dexterity Three Trigger Technique Part 2&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;The idea of the three trigger technique is to use a trigger on an unrelated function or procedure call to get the timing you require for your code.&amp;nbsp; The 1&lt;SUP&gt;st&lt;/SUP&gt; and 2&lt;SUP&gt;nd&lt;/SUP&gt; triggers are used to ensure that the 3&lt;SUP&gt;rd&lt;/SUP&gt; trigger is only used when it is called from your desired parent script.&lt;/P&gt;
&lt;P mce_keep="true"&gt;This post&amp;nbsp;discusses a method that can be used in conjunction with the three trigger technique. In the example code&amp;nbsp;supplied in the part 2 post, we were able to capture&amp;nbsp;a reference to the table buffer we needed because&amp;nbsp;the table was passed as a parameter to the parent script.&amp;nbsp; But, what happens when the table buffer you need is not available as a parameter?&lt;/P&gt;
&lt;HR style="WIDTH: 100%; HEIGHT: 2px"&gt;

&lt;P mce_keep="true"&gt;Before we get to the actual code I should clarify that while I can write code to use a table which is defined in Dynamics.dic, or use pass through code with the &lt;EM&gt;execute()&lt;/EM&gt; function to use a table in a third party dictionary. However,&amp;nbsp;the table buffer used will be a new private instance created for the duration of the code.&amp;nbsp; To use the same table buffer as the original code requires a reference to the table buffer to be captured and stored.&amp;nbsp; Then this reference can be used or passed as a parameter. &lt;/P&gt;
&lt;P mce_keep="true"&gt;We will discuss three methods that can be used to capture that all important table reference:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Method 1: When the table is a parameter to another function or procedure called prior to your triggering point.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;You can add a fourth trigger to your scripts running before the original code of the function or procedure that passes the table as a parameter.&amp;nbsp; This trigger's purpose is just to capture the table reference so it can be used in our code later.&lt;/P&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Example Trigger handler script &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 180px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S1&gt;inout table XYZ_Table;

{ If not inside the three trigger code, do not continue }
if not 'MBS Trigger Active' of globals then
	abort script;
end if;

{ Capture Table Reference }
assign 'MBS Table Reference' of globals as reference to table XYZ_Table;

&lt;/TEXTAREA&gt; &lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Method 2: When the table is attached to a form.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The following scripts demonstrate how to capture the table buffer reference&amp;nbsp;after the first&amp;nbsp;&lt;EM&gt;get table&lt;/EM&gt; or &lt;EM&gt;change table&lt;/EM&gt; command is issued against that table.&amp;nbsp; By using a global integer variable to store the trigger tag returned when registering, we are able to enable and disable the table trigger as needed.&amp;nbsp; The trigger is disabled once the reference is captured so that it does not affect performance.&amp;nbsp;&lt;/P&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: Startup &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S2&gt;{Turn off the warning for literal strings}
pragma(disable warning LiteralStringUsed);

{ Check not in Test mode and 3rd Party XYZ installed }
if not empty(Launch_GetFileName()) then
	if Launch_GetProdPosition(MBS_PROD_XYZ) &amp;gt;= 1 then
	
		if Trigger_RegisterDatabaseByName(MBS_PROD_XYZ, "XYZ_Table", "XYZ_Form", TRIGGER_ON_DB_READ+TRIGGER_ON_DB_READ_LOCK, script MBS_XYZ_Table_READ, 'MBS Table Trigger Tag' of globals) &amp;lt;&amp;gt; SY_NOERR then
			warning "Trigger After table XYZ_Table READ Registration Failed.";
		else
			{ Disable Trigger for now, triggers below will re-enable }
			Trigger_DisableSingle('MBS Table Trigger Tag' of globals);

			if Trigger_RegisterFocusByName(MBS_PROD_XYZ, "form XYZ_Form", TRIGGER_FOCUS_PRE, TRIGGER_BEFORE_ORIGINAL, script MBS_XYZ_FORM_PRE) &amp;lt;&amp;gt; SY_NOERR then
				warning "Trigger Before form XYZ_Form PRE Registration Failed.";
			end if;
		
			if Trigger_RegisterFocusByName(MBS_PROD_XYZ, "form XYZ_Form", TRIGGER_FOCUS_POST, TRIGGER_AFTER_ORIGINAL, script MBS_XYZ_FORM_POST) &amp;lt;&amp;gt; SY_NOERR then
				warning "Trigger After form XYZ_Form POST Registration Failed.";
			end if;
		end if;

	end if;
end if;

{Turn the literal string warning back on}
pragma(enable warning LiteralStringUsed);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_FORM_PRE &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 60px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S3&gt;{ Enable Table Trigger }
Trigger_EnableSingle('MBS Table Trigger Tag' of globals);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_FORM_POST &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 100px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S4&gt;{ Disable Table Trigger, if not already disabled }
Trigger_DisableSingle('MBS Table Trigger Tag' of globals);

{ Clear Table Reference }
clear 'MBS Table Reference' of globals;

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_Table_READ &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 150px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S5&gt;inout anonymous table XYZ_Table;
in integer IN_Operation;

{ Capture Table Reference }
assign 'MBS Table Reference' of globals as reference to table XYZ_Table;

{ Disable Table Trigger now that we have table reference captured }
Trigger_DisableSingle('MBS Table Trigger Tag' of globals);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Method 3: When the table is a local instance created in a function or procedure.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This method is similar to the method above, but uses triggers on the function or procedure and has to use an unrestricted table trigger (i.e. not linked to a form).&amp;nbsp;&lt;/P&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: Startup &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S6&gt;{Turn off the warning for literal strings}
pragma(disable warning LiteralStringUsed);

{ Check not in Test mode and Copier Series installed }
if not empty(Launch_GetFileName()) then
	if Launch_GetProdPosition(MBS_PROD_XYZ) &amp;gt;= 1 then
	
		if Trigger_RegisterDatabaseByName(MBS_PROD_XYZ, "XYZ_Table", "", TRIGGER_ON_DB_READ+TRIGGER_ON_DB_READ_LOCK, script MBS_XYZ_Table_READ, 'MBS Table Trigger Tag' of globals) &amp;lt;&amp;gt; SY_NOERR then
			warning "Trigger After table XYZ_Table READ Registration Failed.";
		else
			{ Disable Trigger for now, triggers below will re-enable }
			Trigger_DisableSingle('MBS Table Trigger Tag' of globals);
			
			if Trigger_RegisterProcedureByName(MBS_PROD_XYZ, "XYZ_Script", TRIGGER_BEFORE_ORIGINAL, script MBS_XYZ_Script_PRE) &amp;lt;&amp;gt; SY_NOERR then
				warning "Trigger Before XYZ_Script Registration Failed.";
			end if;
		
			if Trigger_RegisterProcedureByName(MBS_PROD_XYZ, "XYZ_Script", TRIGGER_AFTER_ORIGINAL, script MBS_XYZ_Script_POST) &amp;lt;&amp;gt; SY_NOERR then
				warning "Trigger After XYZ_Script Registration Failed.";
			end if;
		end if;

	end if;
end if;

{Turn the literal string warning back on}
pragma(enable warning LiteralStringUsed);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_Script_PRE &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 60px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S7&gt;{ Enable Table Trigger }
Trigger_EnableSingle('MBS Table Trigger Tag' of globals);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_Script_POST &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 100px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S8&gt;{ Disable Table Trigger, if not already disabled }
Trigger_DisableSingle('MBS Table Trigger Tag' of globals);

{ Clear Table Reference }
clear 'MBS Table Reference' of globals;

&lt;/TEXTAREA&gt;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=legend&gt;&lt;STRONG&gt;Global Procedure: MBS_XYZ_Table_READ &lt;/STRONG&gt;&lt;TEXTAREA style="BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, consolas, monospace; MAX-HEIGHT: 150px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: gray 1px solid; CURSOR: text; BORDER-RIGHT: gray 1px solid; PADDING-TOP: 4px" class=code wrap=off rows=5 cols=80 readOnly name=S9&gt;inout anonymous table XYZ_Table;
in integer IN_Operation;

{ Capture Table Reference }
assign 'MBS Table Reference' of globals as reference to table XYZ_Table;

{ Disable Table Trigger now that we have table reference captured }
Trigger_DisableSingle('MBS Table Trigger Tag' of globals);

&lt;/TEXTAREA&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Hope you find this technique a useful addition to your arsenal.&lt;/P&gt;
&lt;P&gt;David&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9778651" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Dexterity" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Dexterity/default.aspx" /><category term="Cross Dictionary" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Cross+Dictionary/default.aspx" /><category term="Triggers" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Triggers/default.aspx" /><category term="Advanced Topic" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Advanced+Topic/default.aspx" /><category term="Best Practice" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Best+Practice/default.aspx" /></entry><entry><title>Microsoft Dynamics GP Testing 101 Session</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/20/microsoft-dynamics-gp-testing-101-session.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="281180" href="http://blogs.msdn.com/developingfordynamicsgp/attachment/9923314.ashx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/20/microsoft-dynamics-gp-testing-101-session.aspx</id><published>2009-11-20T01:00:00Z</published><updated>2009-11-20T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="Alice Newsam" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG style="WIDTH: 69px; HEIGHT: 87px" title="Alice Newsam - Click for blog homepage" border=0 hspace=10 alt="Alice Newsam - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9923311/thumb.aspx" width=69 height=87 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9923311/thumb.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;After spending a great week with attendees at the &lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;Microsoft Dynamics GP&amp;nbsp;Technical Conference 2009&lt;/A&gt; in Fargo, I decided to try my hand at contributing to the Developing for Dynamics GP blog.&amp;nbsp; I am a Test Engineer on the GP team focusing on Dexterity and as such I had the pleasure to present a Dynamics GP Testing 101 session at the Conference with my teammate Grant Swenson.&amp;nbsp;&amp;nbsp; So today I wanted to highlight the key takeaways from the session as well as provide links to a couple of great reference materials that are available today.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;First off, when thinking about how to approach creating a test environment for your solution, take some time to identify the areas you need to test in and the starting point that can provide a good foundation for your tests.&amp;nbsp; Do you need a large set of starting data or will a smaller subset do? On the environmental side, are there integrating applications, printers or things like specific date, time or currency formatting you need to utilize in your solution?&amp;nbsp; Once you have identified these things, determine how you will get your system back to this starting point after testing has been done.&amp;nbsp; That may mean taking database backups to restore later or using BCP to pull the data out, etc.&amp;nbsp; Whatever that method is, the first critical part in starting the testing process is figuring out how to replicate and return to your starting point.&amp;nbsp; If there was one piece of information for attendees at the presentation to take away it is that consistency is key.&amp;nbsp; Replicating the same environment you first created tests in to rerun them and verify the results can give you a big boost towards success and make things like troubleshooting errors much, much easier to do.&lt;/P&gt;
&lt;P&gt;Secondly, there are all sorts of tips for creating Dexterity macros or doing things like SRS testing.&amp;nbsp; The main thing to remember here is that you want to start off taking small steps.&amp;nbsp; Don’t try to cover every scenario and have all the data you possibly can be recorded or sent out to an output file.&amp;nbsp; This gets to be quite a chore to verify and most times will leave you frustrated with the whole process.&amp;nbsp; By approaching a small piece of your solution, figuring out the data you will need for that piece and then recording a macro to test that part, can oftentimes be the best way to start.&amp;nbsp; It can also help you to provide some very useful feedback to the rest of the development team much sooner on the quality of a feature or product.&lt;/P&gt;
&lt;P&gt;For those who are looking into bringing automated tests into their development environments, there are two released resources available today that can help paint the full picture of the considerations to take and how to start when recording macros for your Dexterity solutions.&amp;nbsp; The first is in the &lt;A title="Dexterity documentation" href="http://www.microsoft.com/downloads/details.aspx?familyid=65F324E5-2720-42B6-BA4E-5698BFC5D20F&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=65F324E5-2720-42B6-BA4E-5698BFC5D20F&amp;amp;displaylang=en"&gt;Dexterity documentation&lt;/A&gt;.&amp;nbsp; The document to look at is called the Programmer’s Guide Volume 2 and more specifically in Chapter 34: Testing Your Application.&amp;nbsp; Now, if you aren’t a developer don’t be scared away by the word "Programmer’s" in the title.&amp;nbsp; This is a great all around resource that describes the Dexterity macro system that can be used for business logic automation or for testing so be sure to check it out.&amp;nbsp; The second resource that really pulls all the pieces together for you when starting down the automation path is the whitepaper called, "&lt;A title="Recording Test Cases with the Macro System" href="http://download.microsoft.com/download/f/f/b/ffbdb321-98dd-4e8d-b864-3be3fb03cf56/RecordingTestCases.pdf" target=_blank mce_href="http://download.microsoft.com/download/f/f/b/ffbdb321-98dd-4e8d-b864-3be3fb03cf56/RecordingTestCases.pdf"&gt;Recording Test Cases with the Macro System&lt;/A&gt;" (also attached).&amp;nbsp; This is found on the Microsoft site and walks through the importance of creating a starting point, how to get started with macros and helpful .ini settings as well as what to do after you have created your first macros.&lt;/P&gt;
&lt;P&gt;Check these two resources out and see if you can take the first or next step into bringing some automation into your development organization.&amp;nbsp; There are numerous benefits including increasing the overall chances of having successful deployments at your site or your customer sites as well as lowering the overall cost of a project by finding defects in the solution before it goes the door.&amp;nbsp; At the conference we also previewed a test automation framework sample.&amp;nbsp; Stay tuned for more information to come on that once we find a good home for it to be shared with you!&lt;/P&gt;
&lt;P&gt;Have a great day and happy testing!&lt;/P&gt;
&lt;P&gt;Alice&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923314" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="Alice Newsam" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Alice+Newsam/default.aspx" /><category term="Testing" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Testing/default.aspx" /></entry><entry><title>Microsoft Dynamics GP Technical Conference 2009 Wrap Up</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx</id><published>2009-11-18T01:00:00Z</published><updated>2009-11-18T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;&lt;IMG style="WIDTH: 480px; HEIGHT: 224px" title="Microsoft Dynamics GP Technical Conference 2009" border=0 alt="Microsoft Dynamics GP Technical Conference 2009" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx" width=480 height=224 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;So the conference is over and in my opinion it was&amp;nbsp;a great success.&amp;nbsp; I would like to thank all the team members involved at all levels for putting on a great event and making everyone feel so welcome.&amp;nbsp; The friendly atmosphere is one of the reasons I really enjoy going to Fargo (in spite of the extremely long travel times).&lt;/P&gt;
&lt;P mce_keep="true"&gt;Below are the links for all the Conference posts by myself and some of the other bloggers in the community:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;From this blog by David Musgrave&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Getting to the Microsoft Dynamics GP Technical Conference 2009 Part 1" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/07/getting-to-the-microsoft-dynamics-gp-technical-conference-2009-part-1.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/07/getting-to-the-microsoft-dynamics-gp-technical-conference-2009-part-1.aspx"&gt;Getting to the Microsoft Dynamics GP Technical Conference 2009 Part 1&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Getting to the Microsoft Dynamics GP Technical Conference 2009 Part 2" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/08/getting-to-the-microsoft-dynamics-gp-technical-conference-2009-part-2.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/08/getting-to-the-microsoft-dynamics-gp-technical-conference-2009-part-2.aspx"&gt;Getting to the Microsoft Dynamics GP Technical Conference 2009 Part 2&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="A relaxing day before the Microsoft Dynamics GP Technical Conference 2009" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/09/a-relaxing-day-before-the-microsoft-dynamics-gp-technical-conference-2009.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/09/a-relaxing-day-before-the-microsoft-dynamics-gp-technical-conference-2009.aspx"&gt;A relaxing day before the Microsoft Dynamics GP Technical Conference 2009&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Day 0" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/10/microsoft-dynamics-gp-technical-conference-2009-day-0.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/10/microsoft-dynamics-gp-technical-conference-2009-day-0.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 - Day 0&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Day 1" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/11/microsoft-dynamics-gp-technical-conference-2009-day-1.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/11/microsoft-dynamics-gp-technical-conference-2009-day-1.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 - Day 1&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Day 2" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/12/microsoft-dynamics-gp-technical-conference-2009-day-2.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/12/microsoft-dynamics-gp-technical-conference-2009-day-2.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 - Day 2&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Meetings after the Microsoft Dynamics GP Technical Conference 2009" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/14/meetings-after-the-microsoft-dynamics-gp-technical-conference-2009.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/14/meetings-after-the-microsoft-dynamics-gp-technical-conference-2009.aspx"&gt;Meetings after the Microsoft Dynamics GP Technical Conference 2009&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Coming home from the Microsoft Dynamics GP Technical Conference 2009" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/16/coming-home-from-the-microsoft-dynamics-gp-technical-conference-2009.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/16/coming-home-from-the-microsoft-dynamics-gp-technical-conference-2009.aspx"&gt;Coming home from the Microsoft Dynamics GP Technical Conference 2009&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;From the Dynamics GP Blogster by Mariano Gomez&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - The journey begins!" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - The journey begins!&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - A star filled afternoon" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_08.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_08.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - A star filled afternoon&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Final prep work done!" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_09.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_09.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - Final prep work done!&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Day 1" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_11.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_11.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - Day 1&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Day 2" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_12.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_12.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - Day 2&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009 - Time to say goodbye" href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_14.html" target=_blank mce_href="http://dynamicsgpblogster.blogspot.com/2009/11/microsoft-dynamics-gp-technical_14.html"&gt;Microsoft Dynamics GP Technical Conference 2009 - Time to say goodbye&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;From Inside Dynamics GP by Andy Westby&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A title="Live from Fargo…" href="http://blogs.msdn.com/gp/archive/2009/11/13/live-from-fargo.aspx" target=_blank mce_href="http://blogs.msdn.com/gp/archive/2009/11/13/live-from-fargo.aspx"&gt;&lt;FONT color=#006bad&gt;Live from Fargo…&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;From the Edge by Gerice Anderson&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Microsoft Dynamics GP Developers Stampede to Fargo" href="https://community.dynamics.com/blogs/theedge/archive/2009/11/10/microsoft-dynamics-gp-developers-stampede-to-fargo.aspx" target=_blank mce_href="https://community.dynamics.com/blogs/theedge/archive/2009/11/10/microsoft-dynamics-gp-developers-stampede-to-fargo.aspx"&gt;Microsoft Dynamics GP Developers Stampede to Fargo&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Hope you enjoy the coverage of the conference.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Please post your comments and feedback on the event and let us know your thoughts.&lt;/P&gt;
&lt;P mce_keep="true"&gt;David&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923349" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="News" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/News/default.aspx" /></entry><entry><title>Coming home from the Microsoft Dynamics GP Technical Conference 2009</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/16/coming-home-from-the-microsoft-dynamics-gp-technical-conference-2009.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/16/coming-home-from-the-microsoft-dynamics-gp-technical-conference-2009.aspx</id><published>2009-11-16T01:00:00Z</published><updated>2009-11-16T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;&lt;IMG style="WIDTH: 480px; HEIGHT: 224px" title="Microsoft Dynamics GP Technical Conference 2009" border=0 alt="Microsoft Dynamics GP Technical Conference 2009" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx" width=480 height=224 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This is the final diary style post on my trip to the Microsoft Dynamics GP Technical&amp;nbsp;Conference 2009.&amp;nbsp; Hopefully you have enjoyed reading about the events of the trip.&amp;nbsp; As far as I am concerned it was a great success.&amp;nbsp; The conference, my sessions, the meetings and the socialising with partners and Microsoft staff all added up to make a fantastic but tiring trip.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I started my journey at 11:30 when I checked out and left the Ramada hotel. My first flight left Fargo at 13:00 arrived an hour later in Minneapolis/St Paul.&amp;nbsp; I wanted to organise my seats of the two Qantas flights and so was looking for a WiFi connection I could use.&amp;nbsp; Sadly, there was no free connections available.&amp;nbsp; I decided to browse through a gadget shop (OK, I admit it... I like cool gadgets). While there a gentleman asked about Australian power plug adapters and I ended up chatting with him.&amp;nbsp; It turned out that Brian was heading over to Sydney for a work meeting in the Hunter Valley (a great wine region). When he found out that I wanted to get an internet connection, he took me to the Delta/Northwest lounge as a guest. Once he had got me into the lounge and told me how to get onto their WiFi, he left for his flight.&amp;nbsp; Thank-you Brian for your help, which allowed me to get the blog updated.&lt;/P&gt;
&lt;P mce_keep="true"&gt;My flight from Minneapolis left at 17:00 and was uneventful, arriving 4 hours later in Los Angeles at 19:00. I spent a couple of hours in the One World lounge (working this post). The long haul (15 hours) flight left Los Angeles at 22:30 on Saturday&amp;nbsp;night and arrived in Sydney at 08:30 Monday morning.&amp;nbsp; As we crossed the international date line, Sunday will just disappear during the flight.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;This is the bit that I hate. After being away from home for a period of time, I am finally back in Australia, but I am still a five hour flight away from Perth.&amp;nbsp;While in Sydney Airport, I met a couple of other Microsoft guys who were heading from Redmond (Seattle)&amp;nbsp;to Hobart in&amp;nbsp;Tasmania.&amp;nbsp;I helped get them&amp;nbsp;into the Qantas lounge so they could get internet access&amp;nbsp;and refreshments before their connecting flight. After&amp;nbsp;just under&amp;nbsp;an hour&amp;nbsp;waiting, I left Sydney at 10:00 and arrived in Perth 5.5 hours later at 12:30.&amp;nbsp; A half hour taxi ride from the airport and I am finally home after 36 hours on the move.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I think I will sleep for the rest of the day!!!&amp;nbsp; After I surprise my youngest, Rohan, by picking him up from school.&lt;/P&gt;
&lt;P mce_keep="true"&gt;David&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;17-Nov-2009&lt;/STRONG&gt;:&amp;nbsp;Rohan was happy to see me. Also, I did not get to sleep early in the end and am still tired.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;18-Nov-2009:&lt;/STRONG&gt; See the &lt;A title="Microsoft Dynamics GP Technical Conference 2009 Wrap Up" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 Wrap Up&lt;/A&gt; for more posts.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917381" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="General" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/General/default.aspx" /><category term="News" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/News/default.aspx" /></entry><entry><title>Meetings after the Microsoft Dynamics GP Technical Conference 2009</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/14/meetings-after-the-microsoft-dynamics-gp-technical-conference-2009.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/14/meetings-after-the-microsoft-dynamics-gp-technical-conference-2009.aspx</id><published>2009-11-14T01:00:00Z</published><updated>2009-11-14T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;&lt;IMG style="WIDTH: 480px; HEIGHT: 224px" title="Microsoft Dynamics GP Technical Conference 2009" border=0 alt="Microsoft Dynamics GP Technical Conference 2009" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx" width=480 height=224 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;If you are going to spend&amp;nbsp;a day and a half getting somewhere and a day and a half going home, you want to spend more than two or three days at your destination.&lt;/P&gt;
&lt;P mce_keep="true"&gt;My trip to Fargo included the&amp;nbsp;days for the conference, but also one day before and&amp;nbsp;two days afterward in the Microsoft office.&amp;nbsp; The additional days were spent filled up with meetings relating to my role as Escalation Engineer on the Asia Pacific (APAC) support team for Microsoft Dynamics GP.&amp;nbsp; Yes, I do actually have a job to do beyond responding on forums and newsgroups and writing blog articles.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I won't bore you with details, but I will say that all the meetings went really well.&amp;nbsp; A couple of the meetings were related to my pet projects of the Support Debugging Tool and Menus for Visual Studio Tools.&amp;nbsp; At these two meetings I outlined my plans for the releases of these tools and got approval for those plans.&amp;nbsp; You will see these releases as soon as I can complete the development, testing and documentation work needed.&amp;nbsp; I will post the details when they are released.&lt;/P&gt;
&lt;P mce_keep="true"&gt;One of the saddest parts of the day was saying goodbye to Mariano when the time came for him to head out to the airport and start his journey to Atlanta, Georgia.&amp;nbsp;It has been a wonderful experience working with him over the last 18 months online and now in person.&amp;nbsp; I look forward to a long and fruitful relationship with him. Hopefully, you will see us presenting again soon.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 450px; HEIGHT: 390px" title="Saying Goodbye" alt="Saying Goodbye" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922484/original.aspx" width=450 height=390 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922484/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Saying goodbye to Mariano&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After the meetings on Thursday, I went to Granite City bar and grill for dinner with some of Scott Stephenson's team (Developer Support and Escalation Engineers) and brought out the&amp;nbsp;&lt;A title="Arnott's Tim Tams" href="http://www.arnotts.com.au/our-products/products/arnotts-tim-tam.aspx" target=_blank mce_href="http://www.arnotts.com.au/our-products/products/arnotts-tim-tam.aspx"&gt;Arnott's Tim Tams&lt;/A&gt;&amp;nbsp;chocolate biscuits again.&amp;nbsp; A number of the team tried the Tim Tam Slam (see previous post for details) and enjoyed the very yummy but potentially messy experience.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 450px; HEIGHT: 620px" title="Scott Stephenson" alt="Scott Stephenson" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922483/original.aspx" width=450 height=620 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922483/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Scott Stephenson being a great sport and doing the Tim Tam Slam&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;On Friday, I demonstrated the Support Debugging Tool twice to some of the internal support teams with the aim of driving adoption and use of the tool by the Microsoft Dynamics GP support teams. &lt;/P&gt;
&lt;P mce_keep="true"&gt;For dinner on Friday, I caught up with ex-Microsoftie, Sheila Ochoa and her family.&amp;nbsp; She invited her friend Debbie Larson, who works at Microsoft and originally comes from the UK.&amp;nbsp; We spent some time re-living the past and comparing notes and listening to English music from the 1980's. Believe it or not, she comes from the same part of London that I lived in before I came to Australia and knew the school that I went to as a child.&amp;nbsp; Sometimes it is amazing how small the world can be.&lt;/P&gt;
&lt;P mce_keep="true"&gt;David&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;18-Nov-2009:&lt;/STRONG&gt; See the &lt;A title="Microsoft Dynamics GP Technical Conference 2009 Wrap Up" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 Wrap Up&lt;/A&gt; for more posts.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917386" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="General" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/General/default.aspx" /><category term="News" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/News/default.aspx" /></entry><entry><title>Duplicate key error on a range copy statement</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/13/duplicate-key-error-on-a-range-copy-statement.aspx" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/13/duplicate-key-error-on-a-range-copy-statement.aspx</id><published>2009-11-13T09:00:00Z</published><updated>2009-11-13T09:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="Patrick Roth" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG height=87 alt="Patrick Roth - Click for blog homepage" hspace=10 src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9020596/thumb.aspx" width=65 align=right border=0 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9020596/thumb.aspx"&gt;&lt;IMG height=1 src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 align=right border=0 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;An ISV ran across an interesting problem a few days ago in his Dexterity/Dynamics 9.0 solution.&lt;/P&gt;
&lt;P&gt;The goal of a particular procedure was to copy records from one table into a nearly identical duplicate temporary table.&amp;nbsp; The duplicate table contained all of the original table fields plus a few new ones.&amp;nbsp; The temp table was created by using the Duplicate feature in Dexterity so the keys of the new table were identical to the original table.&lt;/P&gt;
&lt;P&gt;The ISV code was using was essentially:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Dexterity Code &lt;/STRONG&gt;&lt;TEXTAREA class=code style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: 'Courier New', courier, consolas, monospace; HEIGHT: 75px; BACKGROUND-COLOR: #f4f4f4" name=S1 rows=3 readOnly wrap=off cols=80&gt;range copy table MyTable to table MyTableTemp;
check error;        {check error for debugging purposes}
warning str(err()); {for debugging purposes}
&lt;/TEXTAREA&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;You would expect that this would work fine however what what we found that no records were copied and the error message given on the check error statement was:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;A range copy statement on table MyTable has created a duplicate key.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The err() function returned 17 - DUPLICATE which was consistent with the check error statement.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Puzzling.&amp;nbsp; I admit that my first instinct was that there WAS a duplicate being generated.&amp;nbsp; I've seen that a number of times and have done it myself once or twice.&amp;nbsp; Take a table and range copy it into another table that has different (unique) keys and depending on your data this will work OK sometimes and sometimes not.&lt;/P&gt;
&lt;P mce_keep="true"&gt;But why don't the non-duplicates get inserted?&amp;nbsp; The reason you don't end up with any data is because SQL rolls back the records on the insertion failure&amp;nbsp;and so you don't get any records in the target table.&lt;/P&gt;
&lt;P mce_keep="true"&gt;So why isn't this the solution?&amp;nbsp; Because the ISV duplicated the original table meaning the original keys were duplicated as well (and he assured me he didn't add any new ones) and so if the original table allowed the data the duplicate should also.&lt;/P&gt;
&lt;P mce_keep="true"&gt;But yet we &lt;U&gt;apparently&lt;/U&gt; were getting a duplicate created.&lt;/P&gt;
&lt;P mce_keep="true"&gt;After determining that there wasn't a code issue and the table definitions were all OK, the next step was to turn on the SQL Server Profiler to see what SQL was complaining about.&lt;/P&gt;
&lt;P mce_keep="true"&gt;To test this, I duplicated the RM_Customer_MSTR table and added the Vendor ID field to the end of the table.&amp;nbsp; I also set the physical name of the table to "temp" to make sure my test was the same as the ISV's.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Dexterity statement used and the SQL Statement generated by the range copy operation is shown below.&amp;nbsp; I removed mosf of the columns since you don't need to see them all to see the issue.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Dexterity Code and SQL Trace results&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=code style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: 'Courier New', courier, consolas, monospace; WHITE-SPACE: nowrap; HEIGHT: 98px; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;P&gt;range copy table RM_Customer_MSTR to table RM_Customer_MSTR_Temp;&lt;/P&gt;
&lt;P&gt;INSERT INTO ##2033653 (CUSTNMBR, CUSTNAME, CUSTCLAS, &amp;lt;removed&amp;gt;, INCLUDEINDP) &lt;BR&gt;&amp;nbsp; SELECT CUSTNMBR, CUSTNAME, CUSTCLAS, &amp;lt;removed&amp;gt;, INCLUDEINDP FROM TWO.dbo.RM00101 &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;The one thing I noticed is that the VENDORID is not included in the insert/select statement generated.&amp;nbsp; So in that case, on a SQL insert where a column is ignored then SQL fills it with the bound default (if available) or null if not.&amp;nbsp; Well, this is a temp table so there is NOT a bound default and so the column should be getting a null which isn't allowed by the constraints that Dexterity puts on table columns during table generation.&lt;/P&gt;
&lt;P mce_keep="true"&gt;So where is the duplicate?&amp;nbsp; There isn't one.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Turning on the Error Messages in our SQL Profiler during our range copy statement, SQL tells us the actual issue which is what I was thinking it to be after verifying the table keys.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;FONT color=red&gt;Cannot insert the value NULL into column 'VENDORID', table 'tempdb.dbo.##2033653; column does not allow nulls. INSERT fails.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Well that explains it.&amp;nbsp; The new columns are ignored and get the column default which is null.&amp;nbsp; Nulls are not allowed and so it fails with no inserts.&lt;/P&gt;
&lt;P mce_keep="true"&gt;In this case, the Dexterity error message given is completely incorrect and misleading - one of the very few times I can think of that has been the case.&lt;/P&gt;
&lt;P mce_keep="true"&gt;There are several solutions that I can think of depending on circumstances.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;If this wasn't a temp table and instead a permanent table, then you can make sure that your columns are bound to the appropriate defaults.&amp;nbsp; So in this case, the binding constant for the VENDORID column is GPS_CHAR.&amp;nbsp; Since the column has a legal default this would just work.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Loop through the original table in a while statement and copy the records one by one to the target table.&amp;nbsp; This will work because Dexterity will supply the default for the new columns.&amp;nbsp; Of course this is slow since these are single inserts in a loop.&amp;nbsp; Very inefficient but it would work.&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Use pass through SQL and write the correct code yourself.&amp;nbsp; In this case, I added the VENDORID column to the list of column fields in the target table and set the default to be an empty string (which is not NULL).&amp;nbsp; This was the solution we employed for the ISV.&lt;/DIV&gt;
&lt;DIV class=code style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: 'Courier New', courier, consolas, monospace; WHITE-SPACE: nowrap; HEIGHT: 76px; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;P&gt;INSERT INTO ##2033653 (CUSTNMBR, CUSTNAME, CUSTCLAS, &amp;lt;removed&amp;gt;, INCLUDEINDP, VENDORID) &lt;BR&gt;&amp;nbsp; SELECT CUSTNMBR, CUSTNAME, CUSTCLAS, &amp;lt;removed&amp;gt;, INCLUDEINDP,'' FROM TWO.dbo.RM00101 &lt;/P&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Upgrade to 10.0.&amp;nbsp; The range copy statement was enhanced for 10.0 to handle the new columns in the target table.&amp;nbsp; In this case, Dexterity would generate the SQL statement from #3 above and the range copy operation would work successfully.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;So the next time you are using Dexterity to perform a range copy operation, think about your keys on the target table to make sure that you couldn't get a legitimate duplicate.&amp;nbsp; And if you are 9.0 and have new columns in the target table, consider using methods #2 or #3 above instead of a straight range copy statement.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Patrick&lt;BR&gt;Developer Support&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920602" width="1" height="1"&gt;</content><author><name>Patrick Roth [MSFT]</name><uri>http://blogs.msdn.com/members/Patrick+Roth+%5bMSFT%5d.aspx</uri></author><category term="Dexterity" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Dexterity/default.aspx" /><category term="SQL" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/SQL/default.aspx" /></entry><entry><title>Microsoft Dynamics GP Technical Conference 2009 - Day 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/12/microsoft-dynamics-gp-technical-conference-2009-day-2.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="14052717" href="http://www.maximumglobalbusiness.com/files/downloads/gptechconf09/TroubleshootingYourDevelopedSolution_2009.zip" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/12/microsoft-dynamics-gp-technical-conference-2009-day-2.aspx</id><published>2009-11-12T01:00:00Z</published><updated>2009-11-12T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;&lt;IMG style="WIDTH: 480px; HEIGHT: 224px" title="Microsoft Dynamics GP Technical Conference 2009" border=0 alt="Microsoft Dynamics GP Technical Conference 2009" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx" width=480 height=224 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After&amp;nbsp;staying up until the early hours of the morning, it was hard to get up again. I met Leslie, Mariano and Jaydel Gluckie from Horizons International for breakfast and then we headed over to the Microsoft Fargo campus.&amp;nbsp; The Fargo campus is now the largest Microsoft campus outside of the Redmond campus.&lt;/P&gt;
&lt;P mce_keep="true"&gt;We went back to our meeting room, finished making the changes we had worked out last night and printed out our notes.&amp;nbsp; We were finally all ready for the second session.&amp;nbsp; I think that next time I present at a conference with a co-presenter, I will organise to get to the location earlier and have another couple of days before hand to fine tune everything .... in person.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The presentation of "&lt;STRONG&gt;Troubleshooting Your Developed Solution&lt;/STRONG&gt;" went well. It was not quite as crowded as the Customizing session, but the attendees liked what they saw.&amp;nbsp; In the session we went through some theory of software development and testing before covering the tools available to you to troubleshoot issues in the different development environments.&amp;nbsp; We sped through the presentation (on purpose) so we could spend most of the session running through a demonstration of the &lt;A title="Support Debugging Tool for Microsoft Dynamics GP" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx" target=_blank mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx"&gt;Support Debugging Tool for Microsoft Dynamics GP&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After the session, Mariano, Leslie and I reviewed the demonstration and discussed how we can tweak a couple of sections.&amp;nbsp; After lunch, we presented the Troubleshooting session again and the repeated session was even better than the original.&amp;nbsp; I must say that Mariano had none of the concerns of the day before, he is a seasoned professional now.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I want to really thank Leslie, who gave Mariano and I her time and fantastic knowledge to make this session awesome.&amp;nbsp; She attended the session both times it was run and helped us keep on time so that we finished within the 75 minutes we had for each session.&amp;nbsp; If you were there and enjoyed the session, please know that it was a combined effort from Mariano and myself as well as Leslie.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Next time, I will request for the Support Debugging Tool to have a session of its own as it definitely has enough in it to fill a session by itself.&amp;nbsp; We can then give the session a more accurate title, so attendees know what they will be seeing.&amp;nbsp; This will also allow us to spend more time on the troubleshooting methods with the development tools and we can do some demonstrations of how to solve various issues.&amp;nbsp; Maybe next conference there will be three sessions.... Customizing, Troubleshooting and the Support Debugging Tool.&lt;/P&gt;
&lt;P mce_keep="true"&gt;As we finished our final concurrent session, the rooms were prepared for the closing session.&amp;nbsp; I managed to get hold of my friend Jeff Trosen long enough to get a photo.&amp;nbsp; Here he is with Babs Coler who organised the conference.... Thanks Babs for a great event.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 361px" title="Jeff Trosen and Babs Coler" alt="Jeff Trosen and Babs Coler" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922465/original.aspx" width=550 height=361 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922465/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Left to Right: Jeff Trosen, Me (again) and Babs Coler&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The closing session included a Questions and Answers (Q&amp;amp;A) section which started off by Mark Rockwell (Rockton Software) and of course Bill Marshall (MC&lt;SUP&gt;2&lt;/SUP&gt;). The Q&amp;amp;A session was MC'd by Dave Coulombe and had a panel representing all the different areas of Microsoft Dynamics GP organisation. We also had an fantastic presentation by John Hancock on the new &lt;A title="Microsoft Power Pivot" href="http://www.powerpivot.com/" target=_blank mce_href="http://www.powerpivot.com/"&gt;Microsoft Power Pivot&lt;/A&gt; tool for extremely fast&amp;nbsp;Business Intelligence analysis.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 262px" title="The Panel" alt="The Panel" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922466/original.aspx" width=550 height=262 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922466/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Left to Right: Jeff Trosen, Chad Sogge, Gary Tronson, Scott Stephenson and Errol Schoenfish&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After the closing session we had one last Study Hall session... read as ... time to socialize with the partner attendees and the Microsoft staff.&amp;nbsp; Not surprisingly, I ended up with the Dexterity development and support teams.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 293px" title="Dexterity Development and Support" alt="Dexterity Development and Support" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922468/original.aspx" width=550 height=293 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922468/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Left to Right: Dave Dusek, Patrick Roth, Erik Nissen, Alice Newsam, Rob Anderson &amp;amp; Brian Roney&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After conference finished, Mariano and I had been invited to a small gathering with the Product Management team at Errol and Cheri Schoenfish's house.&amp;nbsp;I brought some &lt;A title="Arnott's Tim Tams" href="http://www.arnotts.com.au/our-products/products/arnotts-tim-tam.aspx" target=_blank mce_href="http://www.arnotts.com.au/our-products/products/arnotts-tim-tam.aspx"&gt;Arnott's Tim Tams&lt;/A&gt;&amp;nbsp;chocolate biscuits with me from Australia and challenged everyone to try the Tim Tam Slam.&amp;nbsp; This is where you bite off both ends and use the Tim Tam as a straw to suck up a hot drink.&amp;nbsp; You need to put the Tim Tam in your mouth as soon as the hot drink touches your tongue as the biscuit will disintegrate very fast.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Errol Schoenfish" alt="Errol Schoenfish" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922469/original.aspx" mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922469/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Errol Schoenfish doing the Tim Tam Slam (thanks for letting me post this)&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The conference was over and everything was a great success.&amp;nbsp; But my trip was not over yet.&lt;/P&gt;
&lt;P mce_keep="true"&gt;David&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;17-Nov-2009:&lt;/STRONG&gt; Materials for the Troubleshooting session are attached to the bottom of this post.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;18-Nov-2009:&lt;/STRONG&gt; See the &lt;A title="Microsoft Dynamics GP Technical Conference 2009 Wrap Up" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 Wrap Up&lt;/A&gt; for more posts.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917380" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="General" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/General/default.aspx" /><category term="News" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/News/default.aspx" /></entry><entry><title>Microsoft Dynamics GP Technical Conference 2009 - Day 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/11/microsoft-dynamics-gp-technical-conference-2009-day-1.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="4735981" href="http://www.maximumglobalbusiness.com/files/downloads/gptechconf09/CustomizingMicrosoftDynamicsGPClient_2009.zip" /><id>http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/11/microsoft-dynamics-gp-technical-conference-2009-day-1.aspx</id><published>2009-11-11T01:00:00Z</published><updated>2009-11-11T01:00:00Z</updated><content type="html">&lt;P&gt;&lt;A title="David Meego" href="http://blogs.msdn.com/DevelopingForDynamicsGP/" mce_href="http://blogs.msdn.com/DevelopingForDynamicsGP/"&gt;&lt;IMG border=0 hspace=10 alt="David Meego - Click for blog homepage" align=right src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx" width=94 height=94 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/8719549/original.aspx"&gt;&lt;IMG border=0 align=right src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping" width=1 height=1 mce_src="http://www.myworldmaps.net/map.ashx/00bb0d70-4fc5-45a1-8753-6af01cdb9beb/ping"&gt;&lt;/A&gt;&lt;A title="Microsoft Dynamics GP Technical Conference 2009" href="http://www.microsoft.com/dynamics/fargodeveloperconference/" target=_blank mce_href="http://www.microsoft.com/dynamics/fargodeveloperconference/"&gt;&lt;IMG style="WIDTH: 480px; HEIGHT: 224px" title="Microsoft Dynamics GP Technical Conference 2009" border=0 alt="Microsoft Dynamics GP Technical Conference 2009" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx" width=480 height=224 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9917372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Wow, what a ride!!&lt;/P&gt;
&lt;P mce_keep="true"&gt;I will apologize that this update has taken until now to post, but writing blog posts requires time and that is the one thing that has been at a premium over the last few days.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;On Tuesday, I arrive on the first full day at the conference to hear someone call out my name..... someone who still has an Australian accent.&amp;nbsp; I turn around to find none other than Geoff Harding.&amp;nbsp; Former work colleague from Sequel Technology who now lives in the USA and works for Wennsoft.&amp;nbsp; Geoff wrote the Equipment Series while at Sequel Technology, he even let me write a few sections of code.&amp;nbsp; It was great to see Geoff again as I only see him now at Microsoft Dynamics GP conferences.&amp;nbsp; I had brought some Vegemite with me from home to give as a gift and so who better to receive it&amp;nbsp;than a fellow Aussie.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 420px" title="Geoff Harding &amp;amp; David Musgrave" alt="Geoff Harding &amp;amp; David Musgrave" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922105/original.aspx" width=550 height=420 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922105/original.aspx"&gt;&amp;nbsp;&lt;BR&gt;&lt;EM&gt;Geoff Harding (tall one) and David Musgrave (short one)&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Conference started with opening session with Dave Coulombe, Errol Schoenfish and Jeff Trosen welcoming us to Fargo.&amp;nbsp; During the session, Martin Olsen and Chris Dew from eOne Business Solutions demonstrated some of the new "Forms" functionality that was added to the Extender product for v10.0 Service Pack 4 and later.&amp;nbsp; They created a great example on-the-fly of a system to track professors, classes and students. For some reason, they enjoyed picking on me by using my name in their demo data and setting me as a junior level trainer using the lowest hourly rate.&amp;nbsp;Errol also showed a great video which attempts to explain why 11 is better than 10.&lt;/P&gt;
&lt;P&gt;
&lt;OBJECT width=480 height=385&gt;&lt;PARAM NAME="movie" VALUE="http://www.youtube.com/v/ll7rWiY5obI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowscriptaccess" VALUE="always"&gt;
&lt;embed src="http://www.youtube.com/v/ll7rWiY5obI&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After the opening session came the first concurrent session time slot.&amp;nbsp; There were two sessions offered for each time slot and one of these first sessions was Mariano and my "&lt;STRONG&gt;Customizing the Microsoft Dynamics GP Client with Visual Studio Tools, Dexterity and Modifier with VBA&lt;/STRONG&gt;" session. As we are getting ready for the session, setting up the machines and getting the microphones put on, Mariano is looking more and more uncomfortable.&amp;nbsp; I knew that this was his first time presenting to a large public&amp;nbsp;audience, and understood that he would be nervous.&amp;nbsp; While he got me worried, after a quick break to get some fresh air he was ready to go.&amp;nbsp; I had faith in him and it was well rewarded.&amp;nbsp; The session was standing room only and was a great success.&amp;nbsp; We went through eight demos showing how to use four different tools in two ways to achieve similar customisations.&amp;nbsp; He was a lot more relaxed after the session.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 413px" title="Mariano &amp;amp; David" alt="Mariano &amp;amp; David" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922108/original.aspx" width=550 height=413 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922108/original.aspx"&gt;&amp;nbsp;&lt;BR&gt;&lt;EM&gt;Mariano (looking more relaxed) and David&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;After our session, we attended the Rob Anderson's "What's New in Dexterity for Microsoft Dynamics GP 11?" session which showed us some of the cool things coming in the next set of the tools.&amp;nbsp; Here are a&amp;nbsp;couple of&amp;nbsp;them: Context menus in Dexterity and Table buffer parameters for Visual Studio Tools.&amp;nbsp; We also attended Rob Wagner's "Emailing Documents and Word Templates" session, which showed us how the new Word forms functionality works when printing documents such as SOP Invoices.&lt;/P&gt;
&lt;P mce_keep="true"&gt;After the three concurrent sessions there&amp;nbsp;was an ISV Expo and Reception.&amp;nbsp; Mariano, Leslie Vail and I stayed for a little bit and then went to a meeting room to prepare for our Troubleshooting session the next day.&amp;nbsp; In particular we were working on demonstration of the &lt;A title="Support Debugging Tool for Microsoft Dynamics GP" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx" target=_blank mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2008/07/30/support-debugging-tool-for-microsoft-dynamics-gp.aspx"&gt;Support Debugging Tool for Microsoft Dynamics GP&lt;/A&gt;. We made good progress but were not finished when we ran out of time and went back to the conference to participate in the Study Hall sessions.&lt;/P&gt;
&lt;P mce_keep="true"&gt;While there I was able to catch up Dave Coulombe, who I have known since I first started with GP in 1994.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 402px" title="David Coulombe &amp;amp; David Musgrave" alt="David Coulombe &amp;amp; David Musgrave" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922110/original.aspx" width=550 height=402 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922110/original.aspx"&gt;&amp;nbsp;&lt;BR&gt;&lt;EM&gt;Dave Coulombe and David Musgrave&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;I was also able to meet and greet with a number of partners, Microsoft staff and long time friends.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 550px; HEIGHT: 265px" title="Emily, Leslie, David, Constance &amp;amp; Denni" alt="Emily, Leslie, David, Constance &amp;amp; Denni" src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922109/original.aspx" width=550 height=265 mce_src="http://blogs.msdn.com/photos/developingfordynamicsgp/images/9922109/original.aspx"&gt;&lt;BR&gt;&lt;EM&gt;Left to Right: Emily Roen, Leslie Vail, David Musgrave, Constance Gilleland, Denni Conner&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;At the end of the Study Hall time (9pm), we (Mariano, Leslie and I) caught the bus back to the Ramada hotel and found a table in the Basies restaurant that had a power socket.&amp;nbsp; We sat down with some drinks and&amp;nbsp;snacks to eat&amp;nbsp;and continued to work on the demonstration for tomorrow's session.&amp;nbsp; By the time we finished, it was 1:30am and we were all exhausted.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I must thank Mariano and Leslie for spending the time working through the ideas I had to streamline them, improve them and make them work smoothly.&lt;/P&gt;
&lt;P mce_keep="true"&gt;We were finally ready for the session, just need to update the document with the handwritten notes and print&amp;nbsp;the cheat sheets out.&lt;/P&gt;
&lt;P mce_keep="true"&gt;By the time I got to sleep, I had&amp;nbsp;four hours before I had to get up again.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;David&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;17-Nov-2009:&lt;/STRONG&gt; Materials for the Customizing session are attached to the bottom of this post.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;18-Nov-2009:&lt;/STRONG&gt; See the &lt;A title="Microsoft Dynamics GP Technical Conference 2009 Wrap Up" href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx" mce_href="http://blogs.msdn.com/developingfordynamicsgp/archive/2009/11/18/microsoft-dynamics-gp-technical-conference-2009-wrap-up.aspx"&gt;Microsoft Dynamics GP Technical Conference 2009 Wrap Up&lt;/A&gt; for more posts.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917379" width="1" height="1"&gt;</content><author><name>David Musgrave</name><uri>http://blogs.msdn.com/members/David+Musgrave.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/Conference/default.aspx" /><category term="General" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/General/default.aspx" /><category term="News" scheme="http://blogs.msdn.com/developingfordynamicsgp/archive/tags/News/default.aspx" /></entry></feed>