<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aaron Berquist - High Dynamic Range</title>
	<atom:link href="http://www.aaronberquist.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aaronberquist.com</link>
	<description></description>
	<lastBuildDate>Tue, 17 Jul 2012 00:34:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Creating Custom Desktop Alerts In Dynamics GP</title>
		<link>http://www.aaronberquist.com/2012/07/creating-custom-desktop-alerts-in-dynamics-gp/</link>
		<comments>http://www.aaronberquist.com/2012/07/creating-custom-desktop-alerts-in-dynamics-gp/#comments</comments>
		<pubDate>Sat, 07 Jul 2012 16:50:42 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Desktop Alerts]]></category>
		<category><![CDATA[Passthrough Dexterity]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=185</guid>
		<description><![CDATA[First off, full credit goes to David Musgrave for sharing the bulk of this code with me and for providing some great troubleshooting help as I worked to call the code properly from VBA. Allow me to share some background information. While at Convergence 2012 in Houston this year, I attended a presentation on the [...]]]></description>
				<content:encoded><![CDATA[<p>First off, full credit goes to David Musgrave for sharing the bulk of this code with me and for providing some great troubleshooting help as I worked to call the code properly from VBA.</p>
<p>Allow me to share some background information. While at Convergence 2012 in Houston this year, I attended a presentation on the Support Debugging Tool by <a href="http://blogs.msdn.com/b/developingfordynamicsgp/">David Musgrave</a> and <a href="http://dynamicsgpblogster.blogspot.ca/">Mariano Gomez</a>. (Protip: I&#8217;ve found the sessions they run to be the most valuable ones at Convergence, by far.)</p>
<p>At the session, David mentioned in passing that the Support Debugging Tool was configured to raise a &#8220;Desktop Alert&#8221; when certain criteria were met. As soon as he demoed this, I thought &#8211; this would be a great way to provide feedback to a user without interrupting their workflow. Up until now, any time I wanted to provide a message to the user (such as &#8220;Data Saved&#8221;, etc) the only tool I had in my toolbox was a message box which they would have to click on to dismiss.</p>
<p>After emailing David with some questions about how he had implemented this feature, and with a lot of hand-holding from him as well, I had managed to code up a subroutine in VBA (and later, VB.NET) which I could call from a customization to send a Desktop Alert to the user. Here is a sample:</p>
<p><a href="http://www.aaronberquist.com/wp-content/uploads/2012/07/SampleDesktopAlert.png"><img class="size-large wp-image-188 alignleft" title="Sample Desktop Alert" src="http://www.aaronberquist.com/wp-content/uploads/2012/07/SampleDesktopAlert-1024x548.png" alt="Sample Desktop Alert" width="540" height="288" /></a></p>
<p>The code to do this is actually pretty simple, and uses the (unsupported, undocumented) <a href="http://blogs.msdn.com/b/developingfordynamicsgp/archive/2009/03/09/developing-outside-of-the-box.aspx">pass-through Dexterity method</a> to call the Dexterity code which raises a desktop alert:</p>
<p>VBA / VB.NET</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="vb" style="font-family:monospace;"><span style="color: #E56717; font-weight: bold;">Public</span> <span style="color: #E56717; font-weight: bold;">Sub</span> RaiseDesktopAlert(AlertTitle <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span>, AlertMessage <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span>)
        <span style="color: #008000;">'Author: Aaron Berquist
</span>        <span style="color: #008000;">'Date: 07/16/2012
</span>        <span style="color: #008000;">'Purpose: Raise a Dynamics GP &quot;Desktop Alert&quot; message in the bottom right-hand corner of the screen.
</span>        <span style="color: #008000;">'Inputs: 
</span>        <span style="color: #008000;">'AlertTitle - The title to be displayed in the Desktop Alert
</span>        <span style="color: #008000;">'AlertMessage - The message to be displayed in the Desktop Alert
</span>        <span style="color: #008000;">'Based on sample code provided by David Musgrave
</span>        <span style="color: #008000;">'http://blogs.msdn.com/b/developingfordynamicsgp/
</span>
        <span style="color: #151B8D; font-weight: bold;">Dim</span> CompilerApp <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">Object</span>
        <span style="color: #151B8D; font-weight: bold;">Dim</span> compilercommand <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span>
&nbsp;
        CompilerApp = <span style="color: #E56717; font-weight: bold;">CreateObject</span>(<span style="color: #800000;">&quot;Dynamics.Application&quot;</span>)
        <span style="color: #151B8D; font-weight: bold;">Dim</span> CompilerError <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">Integer</span>
        <span style="color: #151B8D; font-weight: bold;">Dim</span> CompilerMessage <span style="color: #151B8D; font-weight: bold;">As</span> <span style="color: #F660AB; font-weight: bold;">String</span> = <span style="color: #800000;">&quot;&quot;</span>
&nbsp;
        CompilerCommand = <span style="color: #800000;">&quot;local string IN_Title;&quot;</span> &amp; vbCrLf
        CompilerCommand = CompilerCommand &amp; <span style="color: #800000;">&quot;local string IN_Message;&quot;</span> &amp; vbCrLf
&nbsp;
        CompilerCommand = CompilerCommand &amp; <span style="color: #800000;">&quot;IN_Message = &quot;</span> &amp; Chr(34) &amp; AlertMessage &amp; Chr(34) &amp; <span style="color: #800000;">&quot;;&quot;</span> &amp; vbCrLf
        CompilerCommand = CompilerCommand &amp; <span style="color: #800000;">&quot;IN_Title = &quot;</span> &amp; Chr(34) &amp; AlertTitle &amp; Chr(34) &amp; <span style="color: #800000;">&quot;;&quot;</span> &amp; vbCrLf
        CompilerCommand = CompilerCommand &amp; <span style="color: #800000;">&quot;call wfDisplayDesktopNotification, IN_Title, IN_Message;&quot;</span>
&nbsp;
&nbsp;
&nbsp;
        <span style="color: #008000;">'Set the Product ID to 0 (Microsoft Dynamics GP)
</span>        CompilerApp.CurrentProductID = 0
        <span style="color: #008000;">'Execute SanScript
</span>
        CompilerError = CompilerApp.ExecuteSanscript(compilercommand, CompilerMessage)
    <span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #E56717; font-weight: bold;">Sub</span></pre></td></tr></table></div>

<p>I hope you find this code useful. I have have good feedback from several users now who appreciate the fact that the Desktop Alert does not interupt their workflow, yet still provides valuable feedback to them about certain actions which have occured inside the system.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Creating+Custom+Desktop+Alerts+In+Dynamics+GP+First+off%2C+full+credit+goes+to+David+Musgrave+for+sha...+http%3A%2F%2Fbit.ly%2FNs8L0p" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2012/07/creating-custom-desktop-alerts-in-dynamics-gp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Populate Rounding Account On Multicurrency Payables Transactions Created Via eConnect</title>
		<link>http://www.aaronberquist.com/2011/07/populate-rounding-account-on-multicurrency-payables-transactions-created-via-econnect/</link>
		<comments>http://www.aaronberquist.com/2011/07/populate-rounding-account-on-multicurrency-payables-transactions-created-via-econnect/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 01:41:59 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[Dynamics GP Tables]]></category>
		<category><![CDATA[eConnect]]></category>
		<category><![CDATA[Multicurrency]]></category>
		<category><![CDATA[PM10100]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=173</guid>
		<description><![CDATA[If you create multicurrency payables (PM) transactions using eConnect, and you are passing in the distributions manually (by setting CREATEDIST to 0), you may have encountered the same issue I encountered today. When the transaction was created, eConnect also (correctly) added in a ROUND distribution, to account for 0.01 cents worth of FX related rounding [...]]]></description>
				<content:encoded><![CDATA[<p>If you create multicurrency payables (PM) transactions using eConnect, and you are passing in the distributions manually (by setting CREATEDIST to 0), you may have encountered the same issue I encountered today.</p>
<p>When the transaction was created, eConnect also (correctly) added in a ROUND distribution, to account for 0.01 cents worth of FX related rounding on the transaction. Unfortunately, eConnect did not populate the distribution with an account. This struck me as strange &#8211; if you manually create a voucher in Dynamics GP and rounding is encountered, a ROUND distribution is created, and the account is populated (with the Rounding Difference Account, which is set up under Tools: Setup: Posting: Posting Accounts).</p>
<p>I should also mention &#8211; there is a specific order that should be followed when creating a multicurrency payables document &#8211; create the distributions first, then create the header record. Details are in VSTools thread <a href="http://vstoolsforum.com/forums/p/428/919.aspx">here</a>.</p>
<p>To resolve this issue, I entered some code into the taPMTransactionInsertPost procedure to retrieve the account and populate the distribution. The code snippet is below, or you can download it <a href="http://www.aaronberquist.com/files/SQLScripts/taPMTransactionInsertPost.sql">here</a>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #008080;">/****** Object:  StoredProcedure [dbo].[taPMTransactionInsertPost]    Script Date: 07/15/2011 09:48:57 ******/</span>
<span style="color: #0000FF;">IF</span> <span style="color: #808080;">EXISTS</span> <span style="color: #808080;">&#40;</span> <span style="color: #0000FF;">SELECT</span>  <span style="color: #808080;">*</span>
            <span style="color: #0000FF;">FROM</span>    sys.<span style="color: #202020;">objects</span>
            <span style="color: #0000FF;">WHERE</span>   <span style="color: #FF00FF;">object_id</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">OBJECT_ID</span><span style="color: #808080;">&#40;</span>N<span style="color: #FF0000;">'[dbo].[taPMTransactionInsertPost]'</span><span style="color: #808080;">&#41;</span>
                    <span style="color: #808080;">AND</span> type <span style="color: #808080;">IN</span> <span style="color: #808080;">&#40;</span> N<span style="color: #FF0000;">'P'</span>, N<span style="color: #FF0000;">'PC'</span> <span style="color: #808080;">&#41;</span> <span style="color: #808080;">&#41;</span>
    <span style="color: #0000FF;">DROP</span> <span style="color: #0000FF;">PROCEDURE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>taPMTransactionInsertPost<span style="color: #808080;">&#93;</span>
GO
&nbsp;
<span style="color: #008080;">/****** Object:  StoredProcedure [dbo].[taPMTransactionInsertPost]    Script Date: 07/15/2011 09:48:57 ******/</span>
<span style="color: #0000FF;">SET</span> ANSI_<span style="color: #808080;">NULL</span>S <span style="color: #0000FF;">ON</span>
GO
&nbsp;
<span style="color: #0000FF;">SET</span> QUOTED_IDENTIFIER <span style="color: #0000FF;">OFF</span>
GO
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">PROCEDURE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>taPMTransactionInsertPost<span style="color: #808080;">&#93;</span>
    @I_vBACHNUMB <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vVCHNUMWK <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">17</span><span style="color: #808080;">&#41;</span> ,
    @I_vVEND<span style="color: #808080;">OR</span>ID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vDOCNUMBR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vDOCTYPE <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vDOCAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vDOCDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vPSTGDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vVADCDTRO <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vVADDCDPR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vPYMTRMID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vTAXSCHID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vDUEDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vDSCDLRAM <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vDISCDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vPRCHAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vCHRGAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vCASHAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vCAMCBKID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vCDOCNMBR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCAMTDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vCAMPMTNM <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCHEKAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vCHAMCBID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vCHEKDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vCAMPYNBR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCRCRDAMT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vCCAMPYNM <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCHEKNMBR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCARDNAME <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vCCRCTNUM <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vCRCARDDT <span style="color: #0000FF;">DATETIME</span> ,
    @I_vCHEKBKID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vTRXDSCRN <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">30</span><span style="color: #808080;">&#41;</span> ,
    @I_vTRDISAMT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vTAXAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vFRTAMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vTEN99AMNT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vMSCCHAMT <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vP<span style="color: #808080;">OR</span>DNMBR <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">20</span><span style="color: #808080;">&#41;</span> ,
    @I_vSHIPMTHD <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vDISAMTAV <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vDISTKNAM <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vAPDSTKAM <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">5</span><span style="color: #808080;">&#41;</span> ,
    @I_vMDFUSRID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vPOSTEDDT <span style="color: #0000FF;">DATETIME</span> ,
    @I_vPTDUSRID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vPCHSCHID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vFRTSCHID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vMSCSCHID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vPRCTDISC <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">2</span><span style="color: #808080;">&#41;</span> ,
    @I_vTax_Date <span style="color: #0000FF;">DATETIME</span> ,
    @I_vCURNCYID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vXCHGRATE <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">7</span><span style="color: #808080;">&#41;</span> ,
    @I_vRATETPID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vEXPNDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vEXCHDATE <span style="color: #0000FF;">DATETIME</span> ,
    @I_vEXGTBDSC <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">30</span><span style="color: #808080;">&#41;</span> ,
    @I_vEXTBLSRC <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span> ,
    @I_vRATEEXPR <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vDYST<span style="color: #808080;">IN</span>CR <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vRATEVARC <span style="color: #0000FF;">NUMERIC</span><span style="color: #808080;">&#40;</span><span style="color: #000;">19</span>, <span style="color: #000;">7</span><span style="color: #808080;">&#41;</span> ,
    @I_vTRXDTDEF <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vRTCLCMTD <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vPRVDSLMT <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vDATELMTS <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vTIME1 <span style="color: #0000FF;">DATETIME</span> ,
    @I_vBatchCHEKBKID <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">15</span><span style="color: #808080;">&#41;</span> ,
    @I_vCREATEDIST <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vRequesterTrx <span style="color: #0000FF;">SMALLINT</span> ,
    @I_vUSRDEFND1 <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span> ,
    @I_vUSRDEFND2 <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span> ,
    @I_vUSRDEFND3 <span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">50</span><span style="color: #808080;">&#41;</span> ,
    @I_vUSRDEFND4 <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">8000</span><span style="color: #808080;">&#41;</span> ,
    @I_vUSRDEFND5 <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">8000</span><span style="color: #808080;">&#41;</span> ,
    @O_iErrorState <span style="color: #0000FF;">INT</span> <span style="color: #0000FF;">OUTPUT</span> ,
    @oErrString <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">255</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">OUTPUT</span>
<span style="color: #0000FF;">AS</span> 
&nbsp;
	<span style="color: #008080;">/*
	AUTHOR: AARON BERQUIST
	DATE: 07/15/2011
	PURPOSE: POPULATE THE &quot;ROUND&quot; DISTRIBUTION AUTOMATICALLY CREATED WHEN
	A MULTICURRENCY PM TRANSACTION IS CREATED USING eCONNECT.
&nbsp;
	BACKGROUND: WHEN CREATING A MULTICURRENCY PM TRANSACTION USING eCONNECT,
	IF THE &quot;CREATEDIST&quot; FLAG IS SET TO 0 AND DISTRIBUTIONS ARE BEING PASSED IN MANUALLY,
	THE SYSTEM WILL CORRECTLY CREATE A &quot;ROUND&quot; DISTRIBUTION (DISTTYPE = 16) IN THE PM10100 TABLE.
	UNFORTUNATELY, IT APPEARS THAT eCONNECT WILL NOT POPULATE THE DISTRIBUTION WITH THE ACCOUNT
	FROM THE ROUNDING DIFFERENCE ACCOUNT SETUP. IF YOU ENTER THE SAME TRANSACTION MANUALLY
	THROUGH THE GP APPLICATION, THE ACCOUNT IS AUTOMATICALLY POPULATED.
&nbsp;
	TESTED ON DYNAMICS GP 10.00.1257.	
&nbsp;
	*/</span>
    <span style="color: #0000FF;">SET</span> <span style="color: #0000FF;">nocount</span> <span style="color: #0000FF;">ON</span>
    <span style="color: #0000FF;">SELECT</span>  @O_iErrorState <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
&nbsp;
    <span style="color: #0000FF;">DECLARE</span> @ROUND<span style="color: #808080;">IN</span>DEX <span style="color: #0000FF;">INT</span>
&nbsp;
    <span style="color: #008080;">--CHECK TO SEE IF THE INTEGRATION CREATED A ROUND ENTRY</span>
    <span style="color: #008080;">--IF SO, eCONNECT DOES NOT PICK THE DEFAULT ROUNDING ACCOUNT IF YOU CHOOSE TO MANUALLY CREATE DISTRIBUTIONS</span>
    <span style="color: #008080;">--SO THE POST PROCEDURE WILL READ THE ACCOUNT FROM POSTING ACCOUNT SETUP (TOOLS: SETUP: POSTING: POSTING ACCOUNTS: ROUNDING DIFFERENCE ACCOUNT)</span>
    <span style="color: #008080;">--AND POPULATE THE DISTRIBUTION</span>
    <span style="color: #0000FF;">IF</span> <span style="color: #808080;">EXISTS</span> <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #000;">1</span> <span style="color: #0000FF;">FROM</span> PM10100 <span style="color: #0000FF;">WHERE</span> VCHRNMBR <span style="color: #808080;">=</span> @I_vVCHNUMWK <span style="color: #808080;">AND</span> DISTTYPE <span style="color: #808080;">=</span> <span style="color: #000;">16</span> <span style="color: #808080;">AND</span> DST<span style="color: #808080;">IN</span>DX <span style="color: #808080;">=</span> <span style="color: #000;">0</span><span style="color: #808080;">&#41;</span>
    <span style="color: #0000FF;">BEGIN</span>
&nbsp;
		<span style="color: #008080;">--ROUNDING DIFFERENCE ACCOUNT IS SERIES 2, SEQNUMBR 900</span>
		<span style="color: #0000FF;">SELECT</span> @ROUND<span style="color: #808080;">IN</span>DEX <span style="color: #808080;">=</span> ACT<span style="color: #808080;">IN</span>DX <span style="color: #0000FF;">FROM</span> SY01100 <span style="color: #0000FF;">WHERE</span> SERIES <span style="color: #808080;">=</span> <span style="color: #000;">2</span> <span style="color: #808080;">AND</span> SEQNUMBR <span style="color: #808080;">=</span> <span style="color: #000;">900</span>
		<span style="color: #0000FF;">UPDATE</span> PM10100 <span style="color: #0000FF;">SET</span> DST<span style="color: #808080;">IN</span>DX <span style="color: #808080;">=</span> IS<span style="color: #808080;">NULL</span><span style="color: #808080;">&#40;</span>@ROUND<span style="color: #808080;">IN</span>DEX,<span style="color: #000;">0</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">WHERE</span> VCHRNMBR <span style="color: #808080;">=</span> @I_vVCHNUMWK <span style="color: #808080;">AND</span> DISTTYPE <span style="color: #808080;">=</span> <span style="color: #000;">16</span> <span style="color: #808080;">AND</span> DST<span style="color: #808080;">IN</span>DX <span style="color: #808080;">=</span> <span style="color: #000;">0</span>
&nbsp;
    <span style="color: #0000FF;">END</span>
&nbsp;
    <span style="color: #0000FF;">RETURN</span> <span style="color: #808080;">&#40;</span>@O_iErrorState<span style="color: #808080;">&#41;</span>
GO
&nbsp;
<span style="color: #0000FF;">GRANT</span> <span style="color: #0000FF;">EXECUTE</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>taPMTransactionInsertPost<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">TO</span> <span style="color: #808080;">&#91;</span>DYNGRP<span style="color: #808080;">&#93;</span> <span style="color: #0000FF;">AS</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>
GO</pre></td></tr></table></div>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Populate+Rounding+Account+On+Multicurrency+Payables+Transactions+Created+Via+eConnect+If+you+create...+http%3A%2F%2Fbit.ly%2FqzSOxo" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/07/populate-rounding-account-on-multicurrency-payables-transactions-created-via-econnect/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Use Dynamic SQL To Generate a Dynamics GP Login Macro</title>
		<link>http://www.aaronberquist.com/2011/07/use-dynamic-sql-to-generate-a-dynamics-gp-login-macro/</link>
		<comments>http://www.aaronberquist.com/2011/07/use-dynamic-sql-to-generate-a-dynamics-gp-login-macro/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 02:03:54 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=167</guid>
		<description><![CDATA[If you run Dynamics GP and have more than a handful of companies, I am sure you have felt the pain of installing or upgrading a 3rd party product, and then having to log in to each company as &#8220;sa&#8221; to complete the install process. I had to do this recently for a new 3rd party [...]]]></description>
				<content:encoded><![CDATA[<p>If you run Dynamics GP and have more than a handful of companies, I am sure you have felt the pain of installing or upgrading a 3rd party product, and then having to log in to each company as &#8220;sa&#8221; to complete the install process. I had to do this recently for a new 3rd party we are using (<a href="http://www.eonesolutions.com/Content.aspx?page=SmartView">SmartView</a> from <a href="http://www.eonesolutions.com/">eOne Solutions</a>). Once the install is complete, a log in to each database as &#8220;sa&#8221; is required to create the necessary tables to support the tool.</p>
<p>Wanting to avoid the aggravation (and tedium) of repeating this process for the 150+ company databases we have, I wrote the SQL script below to generate a Dynamics GP macro which can be played which will log in to each database in sequence without needing any intervention.</p>
<p>It took me a while to figure out how the get the right &#8220;Item&#8221; number into the macro. I first thought it was the CMPANYID value from the SY01500 table, but that wasn&#8217;t right. Next I tried the DEX_ROW_ID value, but that wasn&#8217;t it either. Some trial an error finally yielded the right formula. The Item number is the index position in the dropdown list, ordered by CMPANYID! Despite the fact that the dropdown list displays items ordered by CMPNYNAM (in other words, alphabetically), it appears to first populate the list with the items ordered by CMPANYID and assigns them the item number based on that sequencing, then reorders the list to display by CMPANYNM.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #008080;">/*
AUTHOR: AARON BERQUIST
DATE: 07/07/2011
PURPOSE: THE SCRIPT BELOW WILL GENERATE A DYNAMICS GP MACRO WHICH WILL LOG IN TO EACH COMPANY IN SEQUENCE.
USEFUL WHEN YOU HAVE INSTALLED A NEW 3RD PARTY PRODUCT, OR A SERVICE PACK,
AND EACH DATABASE NEEDS TO BE INITIALIZED BY LOGGING IN AS &quot;SA&quot;.
&nbsp;
TESTED WITH DYNAMICS GP 10, BUILD 10.00.1257
&nbsp;
OVERVIEW:
&nbsp;
THE SCRIPT BELOW BUILDS A MACRO WHICH CAN BE RUN IN DYNAMICS GP.
DEPENDING ON THE NUMBER OF COMPANIES YOU HAVE, THE OUTPUT OF THE DYNAMIC SQL BELOW WILL BE TOO LARGE TO BE
FULLY DISPLAYED IN THE RESULTS PANE OF MANAGEMENT STUDIO.
&nbsp;
THEREFORE, THE DYNAMIC SQL CODE IS INSERTED INTO THE TABLE __MACRO.
&nbsp;
USE MANAGEMENT STUDIO TO EXPORT THE CONTENTS OF THE TABLE, WITHOUT THE HEADER ROW, INTO A FLAT FILE WITH AN EXTENTION OF .MAC
THE FILE CAN THEN BE PLAYED INSIDE DYNAMICS GP.
&nbsp;
USAGE:
&nbsp;
1. EXECUTE THE SCRIPT BELOW - IT USES DYNAMIC SQL TO BUILD A LOGIN MACRO FOR ALL DYNAMICS GP DATABASES.
2. THE CONTENTS OF THE SCRIPT ARE INSERTED INTO THE TABLE __MACRO.
3. EXPORT THE CONTENTS OF THE TABLE TO A FLAT FILE, WITH A .MAC EXTENSION.
4. LOG IN TO ANY DATABASE AS &quot;SA&quot; AND RUN THE MACRO. THE MACRO WILL LOG IN TO EACH DATABASE IN ALPHABETICAL SEQUENCE.
&nbsp;
POTENTIAL MODIFICATIONS:
&nbsp;
WHEN INSTALLING SOME 3RD PARTY PRODUCTS, YOU MAY NEED TO CLICK &quot;OK&quot; ON A WINDOW AT LOGIN TO INSTALL, OR PERFORM SOME REPETITIVE TASKS.
THE MACRO CODE BELOW CAN BE MODIFIED TO SUIT YOUR NEEDS. THE &quot;SPECIAL SAUCE&quot; IS THE ROW_NUMBER() OVER CMPANYID.
&nbsp;
*/</span>
<span style="color: #0000FF;">USE</span> DYNAMICS
GO
<span style="color: #0000FF;">DECLARE</span> @ssQL <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">MAX</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">=</span> <span style="color: #FF0000;">''</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> @sSQL <span style="color: #808080;">=</span> @sSQL<span style="color: #808080;">+</span><span style="color: #FF0000;">'  CommandExec dictionary '</span><span style="color: #FF0000;">'default'</span><span style="color: #FF0000;">'  form '</span><span style="color: #FF0000;">'Command_System'</span><span style="color: #FF0000;">' command '</span><span style="color: #FF0000;">'Switch Company'</span><span style="color: #FF0000;">'
NewActiveWin dictionary '</span><span style="color: #FF0000;">'default'</span><span style="color: #FF0000;">'  form '</span><span style="color: #FF0000;">'Switch Company'</span><span style="color: #FF0000;">' window '</span><span style="color: #FF0000;">'Switch Company'</span><span style="color: #FF0000;">'
  ClickHit field '</span><span style="color: #FF0000;">'(L) Company Names'</span><span style="color: #FF0000;">' item '</span><span style="color: #808080;">+</span><span style="color: #0000FF;">CONVERT</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">3</span><span style="color: #808080;">&#41;</span>,ROW_NUMBER<span style="color: #808080;">&#40;</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">OVER</span> <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">order</span> <span style="color: #0000FF;">BY</span> CMP<span style="color: #808080;">ANY</span>ID<span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">+</span><span style="color: #FF0000;">'  # '</span><span style="color: #808080;">+</span><span style="color: #FF00FF;">LTRIM</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">RTRIM</span><span style="color: #808080;">&#40;</span>CMPNYNAM<span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">+</span><span style="color: #FF0000;">'
  MoveTo field '</span><span style="color: #FF0000;">'OK Button'</span><span style="color: #FF0000;">'
  ClickHit field '</span><span style="color: #FF0000;">'OK Button'</span><span style="color: #FF0000;">'
NewActiveWin dictionary '</span><span style="color: #FF0000;">'default'</span><span style="color: #FF0000;">'  form sheLL window sheLL
NewActiveWin dictionary '</span><span style="color: #FF0000;">'default'</span><span style="color: #FF0000;">'  form sheLL window sheLL
ActivateWindow dictionary '</span><span style="color: #FF0000;">'default'</span><span style="color: #FF0000;">'  form sheLL window sheLL '</span><span style="color: #808080;">+</span><span style="color: #0000FF;">CHAR</span><span style="color: #808080;">&#40;</span><span style="color: #000;">13</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">FROM</span> DYNAMICS..<span style="color: #202020;">SY01500</span>
<span style="color: #0000FF;">ORDER</span> <span style="color: #0000FF;">BY</span> CMPNYNAM
&nbsp;
<span style="color: #0000FF;">PRINT</span> <span style="color: #808080;">&#40;</span>@sSQL<span style="color: #808080;">&#41;</span>
&nbsp;
<span style="color: #008080;">/****** Object:  Table [dbo].[__Macro]    Script Date: 07/07/2011 21:41:48 ******/</span>
<span style="color: #0000FF;">IF</span>  <span style="color: #808080;">EXISTS</span> <span style="color: #808080;">&#40;</span><span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000FF;">FROM</span> sys.<span style="color: #202020;">objects</span> <span style="color: #0000FF;">WHERE</span> <span style="color: #FF00FF;">object_id</span> <span style="color: #808080;">=</span> <span style="color: #FF00FF;">OBJECT_ID</span><span style="color: #808080;">&#40;</span>N<span style="color: #FF0000;">'[dbo].[__Macro]'</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">AND</span> type in <span style="color: #808080;">&#40;</span>N<span style="color: #FF0000;">'U'</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">DROP</span> <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>__Macro<span style="color: #808080;">&#93;</span>
GO
&nbsp;
<span style="color: #008080;">/****** Object:  Table [dbo].[__Macro]    Script Date: 07/07/2011 21:41:48 ******/</span>
<span style="color: #0000FF;">SET</span> ANSI_<span style="color: #808080;">NULL</span>S <span style="color: #0000FF;">ON</span>
GO
&nbsp;
<span style="color: #0000FF;">SET</span> QUOTED_IDENTIFIER <span style="color: #0000FF;">ON</span>
GO
&nbsp;
<span style="color: #0000FF;">SET</span> ANSI_PADD<span style="color: #808080;">IN</span>G <span style="color: #0000FF;">ON</span>
GO
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">TABLE</span> <span style="color: #808080;">&#91;</span>dbo<span style="color: #808080;">&#93;</span>.<span style="color: #808080;">&#91;</span>__Macro<span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span>
	<span style="color: #808080;">&#91;</span>ssql<span style="color: #808080;">&#93;</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">varchar</span><span style="color: #808080;">&#93;</span><span style="color: #808080;">&#40;</span><span style="color: #FF00FF;">max</span><span style="color: #808080;">&#41;</span> <span style="color: #808080;">NULL</span>
<span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">ON</span> <span style="color: #808080;">&#91;</span><span style="color: #0000FF;">PRIMARY</span><span style="color: #808080;">&#93;</span>
&nbsp;
GO
&nbsp;
<span style="color: #0000FF;">SET</span> ANSI_PADD<span style="color: #808080;">IN</span>G <span style="color: #0000FF;">OFF</span>
GO
&nbsp;
<span style="color: #0000FF;">INSERT</span> __MAcro <span style="color: #0000FF;">SELECT</span> @ssQL
&nbsp;
<span style="color: #008080;">--NOW EXPORT THE CONTENTS OF THE TABLE TO A FLAT FILE AND RUN IN GP.</span>
<span style="color: #008080;">--YOU CAN THEN SAFELY DROP THE TABLE __MACRO</span></pre></td></tr></table></div>

<p lang="tsql">You can either copy and paste the code above, or download a script file <a href="http://www.aaronberquist.com/files/SQLScripts/Dynamics%20GP%20-%20Generate%20Login%20Macro.sql">here</a>.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Use+Dynamic+SQL+To+Generate+a+Dynamics+GP+Login+Macro+If+you+run+Dynamics+GP+and+have+more+than+a+h...+http%3A%2F%2Fbit.ly%2Fr2OmST" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/07/use-dynamic-sql-to-generate-a-dynamics-gp-login-macro/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using SmartList Builder With A Linked Server &#8211; It Can Be Done!</title>
		<link>http://www.aaronberquist.com/2011/07/using-smartlist-builder-with-a-linked-server-it-can-be-done/</link>
		<comments>http://www.aaronberquist.com/2011/07/using-smartlist-builder-with-a-linked-server-it-can-be-done/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 01:58:23 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[Global Reports]]></category>
		<category><![CDATA[SmartList]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=149</guid>
		<description><![CDATA[We are looking to deploy SmartList Builder + SmartView as an enhanced reporting solution for our internal customers. One of the things I have seen floating around the net is that you can&#8217;t use SmartList Builder with a SQL Linked Server. In fact, a number of Dynamics MVP&#8217;s alluded to this in a support thread [...]]]></description>
				<content:encoded><![CDATA[<p>We are looking to deploy SmartList Builder + SmartView as an enhanced reporting solution for our internal customers. One of the things I have seen floating around the net is that you can&#8217;t use SmartList Builder with a SQL Linked Server. In fact, a number of Dynamics MVP&#8217;s alluded to this in a support thread at <a href="http://www.ms-news.net/f1610/smartlist-builder-odbc-error-8692687.html">http://www.ms-news.net/f1610/smartlist-builder-odbc-error-8692687.html</a>. The actual error message will look something like this:</p>
<p>GPS Error 58</p>
<p>SQL Error 7405 ODBC SQL Server Driver</p>
<p>Heterogeneous queries require the ANSI_NULL and ANSI_Warnings options to be set for the  connection.<br />
This ensures consistent query semantics. Enable these options and<br />
then reissue your query.</p>
<p>ODBC error 37000</p>
<p>I&#8217;ll show a little further into the article that yes, you can work around this, and pretty easily too &#8211; it just takes a little sleight-of-hand with your SmartLists.</p>
<p>A little background &#8211; we have 150+ Dynamics GP companies, all on one database server. We also frequently have requests to produce reports which consolidate data from all of these entities onto one SmartList so that, in one report, users can quickly see data from every entity. Up until now, we have been using the technique I outlined <a title="Creating Global Dynamics GP SmartLists with OPENQUERY" href="http://www.aaronberquist.com/2010/11/using-dynamics-gp-smartlists-with-openquery/">here</a> to create reports which use a linked server to execute a stored procedure inside a view using OPENQUERY. In order to make this work, I had to come up with a workaround to the very ANSI_NULLs issue other people have reported as stopping them in their tracks.</p>
<p>The secret boils down to this &#8211; you have to trick AnyView, or SmartList Builder into accepting the view the first time you add it. Once you do that, and build your SmartList, you can change what the view is actually doing after the fact. I know that it works with AnyView, and have done a test with SmartList builder and it works there as well.</p>
<p>For the steps below, assume the final query you want to use looks something like the code below. Column1 is varchar(5) and Column2 is TINYINT:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">select</span> Column1, Column2 <span style="color: #0000FF;">from</span> L<span style="color: #808080;">IN</span>KEDSERVER.<span style="color: #202020;">SAMPLEDB</span>.<span style="color: #202020;">dbo</span>.<span style="color: #202020;">SAMPLETABLE</span></pre></td></tr></table></div>

<p>Here are the steps you need to follow:</p>
<p>Create a SQL view with the columns and field lengths that match the &#8220;final&#8221; report you want to produce:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">VIEW</span> SampleView
&nbsp;
<span style="color: #0000FF;">AS</span>
&nbsp;
<span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">convert</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">varchar</span><span style="color: #808080;">&#40;</span><span style="color: #000;">5</span><span style="color: #808080;">&#41;</span>,<span style="color: #FF0000;">''</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">as</span> Column1, <span style="color: #0000FF;">convert</span><span style="color: #808080;">&#40;</span><span style="color: #0000FF;">tinyint</span>,<span style="color: #000;">0</span><span style="color: #808080;">&#41;</span> <span style="color: #0000FF;">as</span> Column2
&nbsp;
GO
&nbsp;
<span style="color: #0000FF;">GRANT</span> <span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">ON</span> SampleView <span style="color: #0000FF;">TO</span> DYNGRP</pre></td></tr></table></div>

<p>Add that view to SmartList Builder / AnyView and build your SmartList off that view.</p>
<p>Once you have successfully built the object, ALTER the view to call the code from the linked server:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">ALTER</span> <span style="color: #0000FF;">VIEW</span> SampleView
&nbsp;
<span style="color: #0000FF;">AS</span>
&nbsp;
<span style="color: #008080;">--SELECT convert(varchar(5),'') as Column1, convert(tinyint,0) as Column2</span>
<span style="color: #0000FF;">select</span> Column1, Column2 <span style="color: #0000FF;">from</span> L<span style="color: #808080;">IN</span>KEDSERVER.<span style="color: #202020;">SAMPLEDB</span>.<span style="color: #202020;">dbo</span>.<span style="color: #202020;">SAMPLETABLE</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>Voila! Your SmartList will run the linked server code, with no ANSI_NULL warnings!</p>
<p>I have used this approach for most of the SmartLists we have in Production today, with great success. Of course, using a linked server is not, in the end, an ideal solution, but for cases when you have to, the method above will allow you to use SmartLists with SQL Linked Servers successfully.</p>
<p>Note: I have updated the sample code above to include the &#8220;GRANT SELECT&#8221; permissions to &#8220;DYNGRP&#8221; on the view. If you don&#8217;t do this, SmartView will spin forever on the &#8220;Loading&#8230;&#8221; screen when you try to run a SmartList.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Using+SmartList+Builder+With+A+Linked+Server+%E2%80%93+It+Can+Be+Done%21+We+are+looking+to+deploy+SmartList+B...+http%3A%2F%2Fbit.ly%2FjD3Ufm" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/07/using-smartlist-builder-with-a-linked-server-it-can-be-done/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Book Review: Microsoft Dynamics GP 2010 Reporting</title>
		<link>http://www.aaronberquist.com/2011/05/book-review-microsoft-dynamics-gp-2010-reporting/</link>
		<comments>http://www.aaronberquist.com/2011/05/book-review-microsoft-dynamics-gp-2010-reporting/#comments</comments>
		<pubDate>Fri, 27 May 2011 01:24:32 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Dynamics GP]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=138</guid>
		<description><![CDATA[Full Disclosure: I was provided a no-charge eBook version for the purposes of this review by the publisher, Packt. Microsoft Dynamics GP 2010 Reporting by David Duncan and Christopher Liley, is a very good, general purpose book on the reporting options available in Dynamics GP. It focuses on the &#8220;Big 5&#8243; reporting options for Dynamics [...]]]></description>
				<content:encoded><![CDATA[<p>Full Disclosure: I was provided a no-charge eBook version for the purposes of this review by the publisher, Packt.</p>
<p>Microsoft Dynamics GP 2010 Reporting by David Duncan and Christopher Liley, is a very good, general purpose book on the reporting options available in Dynamics GP. It focuses on the &#8220;Big 5&#8243; reporting options for Dynamics GP &#8211; SmartList/Excel Reports, Report Writer, SSRS, Analysis Cubes, and Management Reporter. In my opinion, the book does a good job of balancing the &#8220;theory&#8221; of report creation with the &#8220;reality&#8221; of execution. That is to say, the book balances explaining &#8220;why&#8221; and &#8220;when&#8221; to pick a certain reporting tool with &#8220;how&#8221; to use the tool you&#8217;ve chosen.</p>
<p>If I had to suggest a target audience for the book, my feeling is the following types of people would best benefit:</p>
<p>1. &#8220;Power&#8221; end-users of Dynamics GP who want the ability to build some basic reports without needing the help of &#8220;the IT guy&#8221; or a consultant.</p>
<p>2. Beginner-to-Intermediate Dynamics GP professionals who want some guidance on how to choose the right reporting tool for the job, and how to implement some of the basic features of each reporting tool.</p>
<p>By way of compliments, I can say that I picked up a few tips on SmartList/Excel Reports I can likely make use of at my &#8220;day job&#8221;. Also, given the somewhat dry nature of a technical book on report creation, the authors took enough of a conversational approach to keep things feeling somewhat fresh.</p>
<p>If you&#8217;re an advanced Dynamics GP professional or consultant, I&#8217;m not sure there is going to by a lot on this book for you. As mentioned above, I see this as a good, general-purpose book to give a flavour for the reporting options available. It&#8217;s not a deep-dive, nuts-and-bolts technical book &#8211; and depending on who you are, that may not be a bad thing.</p>
<p>Overall, I give the book a 7/10 &#8211; broad coverage of subjects, written well for a technical book, and with enough detail to get someone up and running on a reporting tool.</p>
<p>The publisher is running a promotion for the month of May &#8211; details of which can be found at <a href="http://link.packtpub.com/J9AEn6">http://link.packtpub.com/J9AEn6</a></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Book+Review%3A+Microsoft+Dynamics+GP+2010+Reporting+Full+Disclosure%3A+I+was+provided+a+no-charge+eBook...+http%3A%2F%2Fbit.ly%2FmbjShG" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/05/book-review-microsoft-dynamics-gp-2010-reporting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Troubleshooting Upgrade to Dynamics GP 2010 R2, Part 2</title>
		<link>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-dynamics-gp-2010-r2-part-2/</link>
		<comments>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-dynamics-gp-2010-r2-part-2/#comments</comments>
		<pubDate>Tue, 03 May 2011 18:28:32 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=134</guid>
		<description><![CDATA[Another error encountered, another error resolved. During the upgrade of the sample database, TWO, I received an error on the procedure SVC_MailProcessLOG. The error message was: ERROR [Microsoft][SQL Server Native Client 10.0]TCP Provider: The specified network name is no longer available. That incredibly helpful error message really means: Perform your GP Utilities run on the [...]]]></description>
				<content:encoded><![CDATA[<p>Another error encountered, another error resolved.</p>
<p>During the upgrade of the sample database, TWO, I received an error on the procedure SVC_MailProcessLOG. The error message was:</p>
<p>ERROR [Microsoft][SQL Server Native Client 10.0]TCP Provider: The specified network name is no longer available.</p>
<p>That incredibly helpful error message really means: Perform your GP Utilities run on the SQL Server itself.</p>
<p>I made the mistake of running GP Utilities from one of the client machines, not from the actual SQL Server. It appears that something in that procedure causes an issue when you&#8217;re trying to create it from a client machine, over the network, rather than from the local SQL Server itself.</p>
<p>Another good reason to RTFM, I guess <img src='http://www.aaronberquist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Troubleshooting+Upgrade+to+Dynamics+GP+2010+R2%2C+Part+2+Another+error+encountered%2C+another+error+res...+http%3A%2F%2Fbit.ly%2Fixr3TF" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-dynamics-gp-2010-r2-part-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Troubleshooting Upgrade to GP 2010 R2</title>
		<link>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-gp-2010-r2/</link>
		<comments>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-gp-2010-r2/#comments</comments>
		<pubDate>Tue, 03 May 2011 16:03:57 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Dynamics GP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=126</guid>
		<description><![CDATA[I&#8217;ve been working on installing the newly released GP 2010 R2 in a &#8220;sandbox&#8221; environment. I ran in to an issue performing the upgrade and thought I&#8217;d share it in case it helps anyone else. I had the GP 2010 client installed on the same machine I was installing R2 on. Rather than creating a [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been working on installing the newly released GP 2010 R2 in a &#8220;sandbox&#8221; environment. I ran in to an issue performing the upgrade and thought I&#8217;d share it in case it helps anyone else.</p>
<p>I had the GP 2010 client installed on the same machine I was installing R2 on. Rather than creating a new DSN at install time, I simply renamed the existing DSN used for GP 2010 and moved on to GP Utilities.</p>
<p>However, the upgrade kept crashing at the &#8220;syExcelReports&#8221; step. The crash report indicated an issue with sqlncli.exe.</p>
<p>After trying a few other things, I finally thought about what the sqlncli.exe message might mean. Going in to the DSN setup (c:\windows\syswow64\odbcad32.exe on my 64-bit machine), I noticed that the original GP 2010 DSN I used was using an old version of the SQL Client.</p>
<p>I created a new DSN using the SQL Native Client 10.0 driver, re-ran the upgrade using that DSN, and voila! Upgrade completed. I hope this tip saves someone else some time and frustration as they work through their install/upgrade of GP2010 R2.</p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Troubleshooting+Upgrade+to+GP+2010+R2+I%27ve+been+working+on+installing+the+newly+released+GP+2010+R2...+http%3A%2F%2Fbit.ly%2FjDv3Va" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/05/troubleshooting-upgrade-to-gp-2010-r2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Built It Better: Requirements Gathering – Tip #2: Map It Out</title>
		<link>http://www.aaronberquist.com/2011/02/built-it-better-requirements-gathering-%e2%80%93-tip-2-map-it-out/</link>
		<comments>http://www.aaronberquist.com/2011/02/built-it-better-requirements-gathering-%e2%80%93-tip-2-map-it-out/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 02:54:07 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Build IT Better]]></category>
		<category><![CDATA[Business Requirements]]></category>
		<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=120</guid>
		<description><![CDATA[Tip #2explains the importance of documenting both current and desired business processes in Visio.]]></description>
				<content:encoded><![CDATA[<p>The old phrase “you can’t get there from here” should not be a part of your vocabulary when gathering business requirements. In fact, a key part of your mandate is to accurately map both “current” and “end” states, as understanding where you’re starting and where you want to end up is critical.</p>
<p>I’ve found the easiest way to accomplish this is to sit down with your customer, fire up a copy of Visio, and say “Walk me through the way you do things now”. As your customer articulates the process, start dropping boxes into your Visio diagram with a quick note in each box indicating the general step being performed. Don’t get bogged down in the minute details at this stage – you want to sketch out the major steps being performed and any decision points that are needed.</p>
<p>Once you’ve got things fleshed out – step through the process again with your customer, confirming that a) the notes you took are right, b) you haven’t missed anything, and c) they haven’t missed a step.</p>
<p>Congratulations – you now know where you’re starting from. Next, you need to figure out where you want to go. Again, this is an area where you’ll need to collaborate with your customer and start documenting the ideal “end state”. In other words – how can the process be improved. Start dropping those boxes into Visio and making notes. Look for ways to remove unnecessary steps from the process, rearrange steps to improve the flow of information, etc. Ideally, you should be able to rework the process and identify any “net new” functionality you need to add.</p>
<p>At the end of this exercise, you should have the following:</p>
<ol>
<li>A flowchart showing the current process.</li>
<li>A flowchart showing the new, improved process.</li>
<li>A list of changes between the “current” and “improved” processes. This delta will form the basis for your business requirements.</li>
</ol>
<p>In my next post, Tip #3 will expand on point #3 above. Stay tuned!</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Built+It+Better%3A+Requirements+Gathering+%E2%80%93+Tip+%232%3A+Map+It+Out+Tip+%232explains+the+importance+of+docum...+http%3A%2F%2Fbit.ly%2FjQpiXY" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/02/built-it-better-requirements-gathering-%e2%80%93-tip-2-map-it-out/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Build IT Better: Requirements Gathering &#8211; Tip #1: Get A Room</title>
		<link>http://www.aaronberquist.com/2011/02/build-it-better-requirements-gathering-tip-1-get-a-room/</link>
		<comments>http://www.aaronberquist.com/2011/02/build-it-better-requirements-gathering-tip-1-get-a-room/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 01:29:30 +0000</pubDate>
		<dc:creator>Aaron Berquist</dc:creator>
				<category><![CDATA[Build IT Better]]></category>
		<category><![CDATA[Business Requirements]]></category>
		<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=93</guid>
		<description><![CDATA[The first tip in the Build IT Better series of articles focusses on the importance of meeting face-to-face when gathering business requirements.]]></description>
				<content:encoded><![CDATA[<p>First off, allow me to apologize for the delay in starting this series. Life has been hectic in the Berquist household and that’s resulted in a delay in these articles. I hope to get back on track in the coming days and start to introduce some of the ways you can Build “IT” Better. So, without further ado…</p>
<p>To kick off the &#8220;Build IT Better&#8221; series of articles, I&#8217;m going to focus on the 1st phase of a proper solutions methodology &#8211; Requirements Gathering. In my experience, this is the most important phase, as any incomplete, incorrect, or unclear information in this step will throw the whole project off the rails right quick. The first tip I have to avoid this problem is:</p>
<h1>Get A Room</h1>
<p>My first tip is not designed to get you slapped with a harassment lawsuit &#8211;  it’s designed to help you get the best possible requirements for the task at hand. When it comes to trying to tease out the details of the business problem you’re trying to solve, nothing beats being face-to-face with your customers. Taking the time to arrange an in-person meeting, and travel to your customer’s location – be it in the same office tower, across town, or maybe even across the country – shows that you value what they have to say and are willing to invest the time to listen.<br />
<div class="wp-caption alignright" style="width: 250px"><a href="http://www.flickr.com/photos/dukeenergy/4755090944/"><img alt="" src="http://farm5.static.flickr.com/4117/4755090944_1897e0e959_m.jpg" title="Your Secret Weapon" width="240" height="160" /></a><p class="wp-caption-text">Your Secret Weapon</p></div><br />
I’ve found that working with people face-to-face is the single best way to build rapport, gain trust, and establish yourself as a subject matter expert whose advice they should take seriously. Allowing your customers to put a face to your name also helps to build a bond between you which can prove invaluable when the inevitable snags come up during your project. A little goodwill established up front can go a long way.</p>
<p>Aside from the team-building aspect of meeting face-to-face, the other main benefit I’ve found is that it provides the best forum to gather the level of detail you’ll need to successfully implement your project or change. Collaborating as a group in the same room tends to bring out the “gotcha” scenarios as people bounce ideas off of each other, or start to talk through the details of a process. Often you will hear “Oh, I almost forgot – we do this, and this, and this,” or “Actually, on second thought, maybe we don’t really need you to do (item X) because we only do that once a quarter and it doesn’t take us much time at all.”</p>
<p>While it is certainly possible to gather requirements over the phone, or even over email, I have found that if you truly want to understand the problem at hand, establish rapport with your customers, and capture all of the different scenarios involved, nothing beats meeting together in the same room.<span id="_marker"> </span></p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Build+IT+Better%3A+Requirements+Gathering+%E2%80%93+Tip+%231%3A+Get+A+Room+The+first+tip+in+the+Build+IT+Better+s...+http%3A%2F%2Fbit.ly%2Fjvoh3y" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/02/build-it-better-requirements-gathering-tip-1-get-a-room/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Book Review: Dynamics GP 2010 Implementation by Victoria Yudin</title>
		<link>http://www.aaronberquist.com/2011/01/book-review-dynamics-gp-2010-implementation-by-victoria-yudin/</link>
		<comments>http://www.aaronberquist.com/2011/01/book-review-dynamics-gp-2010-implementation-by-victoria-yudin/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 17:59:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Dynamics GP]]></category>

		<guid isPermaLink="false">http://www.aaronberquist.com/?p=99</guid>
		<description><![CDATA[In this post, I review the book Dynamics GP 2010 Implementation by Victoria Yudin.]]></description>
				<content:encoded><![CDATA[<p>Full Disclosure: I received a no-charge electronic copy of the book from the publisher.</p>
<p>In my opinion, <a href="http://victoriayudin.com">Victoria Yudin</a> has managed to cram all of the information necessary to properly implement Dynamics GP 2010 into this book, &#8220;<a href="http://www.packtpub.com/microsoft-dynamics-gp-2010-implementation/book">Dynamics GP 2010 Implementation</a>&#8220;. The material covers everything from start to finish &#8211; from building your implementation team through to post-implementation follow up and training.</p>
<p>Chapters 1-4 cover the essential planning exercises you will need to follow in order to successfully implement your ERP system. I like the fact that she spent the time to outline some of the intricacies of Dynamics GP (such as how, for a SQL-based application, it doesn&#8217;t use SQL Server effectively as it could, and why), and how the Dexterity runtime works. Also of benefit in this section is a good guide on how to select the right people for your implementation team, and a sizing guide for how to select the right level of hardware for your deployment.</p>
<p>Chapter 5 covers the actual steps to perform the installation and some common configuration items. I was pleasantly surprised that the whole installation stack was covered &#8211; in other words, the book walks the reader through the steps of installing SQL Server. For more advanced or experienced implementers, this may be old hat, but for the &#8220;new&#8221; implementer this information could be very valuable.</p>
<p>Chapters 6-8 walk through module configuration &#8211; the main subledgers (AP, AR, SOP, POP, etc) and the GL. Each section is well written and contains enough detail for a &#8220;new&#8221; implementer to configure the system the appropriate way.</p>
<p>Chapter 9 covers populating master data using Integration Manager. While I personally am not a fan of Integration Manager, for the &#8220;new&#8221; implementer it is worthwhile to understand how it works and what it can do.</p>
<p>Chapter 10 covers training, and lists out some common tools that may be of use post-deployment. Echoing the rest of this book, this area is a good mix of suggestions and hard facts to aid the implementer.</p>
<p>Overall, I was impressed by the depth and breadth of material covered. One thing I would have liked to see more of is &#8220;tips and tricks&#8221; or &#8220;lessoned learned&#8221; by the author. As someone with many years of experience, I am sure the author has come across a number of unique or interesting scenarios, and adding some of those to the book would have added a little more flavour to the book.</p>
<p>I also would have loved to see a &#8220;what&#8217;s new&#8221; section which highlights some of the main changes  between GP 10 and GP 2010. Although the book appears slanted towards those performing a new implementation of the Dynamics GP system, having insight into what is new about this particular release of the product, as compared to the previous version, would have been helpful as well.</p>
<p>In all, I&#8217;d rate the book as an 8/10. Well written, comprehensive, and with enough breadth and depth that I didn&#8217;t feel like I was missing anything critical in order to properly implement Dynamics GP 2010.</p>
<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=%40aaronberquist+-+Book+Review%3A+Dynamics+GP+2010+Implementation+by+Victoria+Yudin+In+this+post%2C+I+review+the+book+Dyna...+http%3A%2F%2Fbit.ly%2FiFE6yi" title="Post to Twitter"><img class="nothumb" src="http://www.aaronberquist.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.aaronberquist.com/2011/01/book-review-dynamics-gp-2010-implementation-by-victoria-yudin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
