<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6816887795617080879</id><updated>2012-01-14T00:41:51.847+05:00</updated><category term='Dimension'/><category term='ledger journal'/><category term='formRun'/><category term='traceParser'/><category term='Dynamics AX 6'/><category term='Upgrade'/><category term='Delete actions'/><category term='Intelligent Data Management Framework'/><category term='Inventory'/><category term='dynamics AX 2012'/><category term='cluster'/><category term='RunOn'/><category term='AX 2009'/><category term='BI'/><category term='SSRS'/><category term='IDM'/><category term='Server'/><category term='LedgerVoucher'/><category term='AX 4.0'/><category term='close method'/><category term='Query'/><category term='AOS'/><category term='Client'/><category term='CalledFrom'/><title type='text'>Afsar's Dynamics AX knowledge arena</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>98</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1257141795273321438</id><published>2012-01-13T23:56:00.000+05:00</published><updated>2012-01-13T23:56:37.913+05:00</updated><title type='text'>Create a public Enterprise Portal site</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Happy New Year 2012 !!!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Due to my busy schedule here in USA, I was unable to share any new post with you guys.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;But here is the very nice artical about How to create/expose enterprise portal site publically.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/hh285823.aspx"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://technet.microsoft.com/en-us/library/hh285823.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1257141795273321438?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1257141795273321438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1257141795273321438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1257141795273321438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1257141795273321438'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2012/01/create-public-enterprise-portal-site.html' title='Create a public Enterprise Portal site'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3674822352528373495</id><published>2011-11-27T23:38:00.002+05:00</published><updated>2011-11-28T15:20:47.363+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>White paper of UK CIS new functionality on Dynamics AX 2012 is available</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;I developed a feature for Dynamics AX 2012 named UK Construction&amp;nbsp;Industry&amp;nbsp;Scheme UK CIS has been released in Dynamics AX 2012 CU3 and&amp;nbsp;documentation&amp;nbsp;is available under the following link:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;Download Center: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28155"&gt;http://www.microsoft.com/download/en/details.aspx?id=28155&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;CustomerSource: &lt;/span&gt;&lt;a href="https://mbs.microsoft.com/customersource/documentation/whitepapers/ax2012_cu3_unitedkingdom_wp" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;https://mbs.microsoft.com/customersource/documentation/whitepapers/ax2012_cu3_unitedkingdom_wp&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;PartnerSource:&lt;/span&gt;&lt;a href="https://mbs.microsoft.com/partnersource/deployment/documentation/whitepapers/ax2012_cu3_unitedkingdom_wp" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;https://mbs.microsoft.com/partnersource/deployment/documentation/whitepapers/ax2012_cu3_unitedkingdom_wp&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Trebuchet MS&amp;quot;, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3674822352528373495?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3674822352528373495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3674822352528373495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3674822352528373495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3674822352528373495'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/11/white-paper-of-uk-cis-new-functionality.html' title='White paper of UK CIS new functionality on Dynamics AX 2012 is available'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5668467668264875067</id><published>2011-11-21T15:42:00.000+05:00</published><updated>2011-11-21T15:42:55.130+05:00</updated><title type='text'>What type of companies can use Dynamics AX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Customers with 500 to 5000 employees in Public Sector, Manufacturing and Retail industries only&lt;/li&gt;&lt;li&gt;Customers with over 5000 employees&amp;nbsp;&lt;/li&gt;&lt;li&gt;Customers with between 200 and 7500 employees in all industries. The solution includes out-of the box capabilities for Manufacturing, Construction, Retail, Services, and Public Sector industries.&lt;/li&gt;&lt;li&gt;Customers with between 200 and 7500 employees in all industries except Public Sector&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5668467668264875067?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5668467668264875067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5668467668264875067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5668467668264875067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5668467668264875067'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/11/what-type-of-companies-can-use-dynamics.html' title='What type of companies can use Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4167415092370828044</id><published>2011-11-21T12:59:00.001+05:00</published><updated>2011-11-21T13:01:13.001+05:00</updated><title type='text'>Dynamics AX 2012 Cumulative Update 2 is released</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Last&amp;nbsp;week Microsoft&amp;nbsp;announced the&amp;nbsp;Cumulative update 2 for Dynamics AX 2012.&amp;nbsp;&lt;span class="MsoHyperlink"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;Please review the &lt;a href="http://support.microsoft.com/kb/2606916"&gt;Support KB Article&lt;/a&gt; for more details.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;This cumulative update include&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="MsoHyperlink" style="text-indent: -24px;"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="MsoHyperlink" style="text-indent: -24px;"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;&lt;a href="http://support.microsoft.com/kb/2579565"&gt;Cumulative Update 1 for Microsoft Dynamics AX 2012&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span"&gt;Translations in 29 languages for labels introduced since RTM. For customers wishing to install a Wave II language they will still require the &lt;/span&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb$en-us$2627392&amp;amp;wa=wsignin1.0" style="text-indent: -24px;"&gt;Wave II Language Pack&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="MsoHyperlink" style="text-indent: -24px;"&gt;&lt;span style="color: windowtext; font-family: 'Trebuchet MS', sans-serif; text-decoration: none;"&gt;2 country specific updates.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="MsoHyperlink" style="text-indent: -24px;"&gt;&lt;span style="color: windowtext; font-family: 'Trebuchet MS', sans-serif; text-decoration: none;"&gt;114+ hotfixes released on AX 2012 RTM since Cumulative Update 1 for Dynamics AX 2012.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;For more details on fixes included please review the &lt;a href="http://support.microsoft.com/kb/2606916"&gt;Support KB Article&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin-left: .2in;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="color: windowtext; font-size: 12pt; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4167415092370828044?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4167415092370828044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4167415092370828044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4167415092370828044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4167415092370828044'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/11/dynamics-ax-2012-cumulative-update-2-is.html' title='Dynamics AX 2012 Cumulative Update 2 is released'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3085059398240356520</id><published>2011-11-11T19:12:00.003+05:00</published><updated>2011-11-11T19:12:37.170+05:00</updated><title type='text'>Debugging in Dynamics AX 2012 as a non-admin Role</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;To access breakpoints as a limited user:&lt;br /&gt;1. open dynamics as admin&lt;br /&gt;2. add yourself to your favorite role (in addition to admin)&lt;br /&gt;3. shift control w to open a workspace.&lt;br /&gt;4. insert a break point into a well know x++ class that the role accesses.&lt;br /&gt;5. create a new job&lt;br /&gt;6. insert this:&lt;br /&gt;static void NonAdmin(Args _args)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;securityutil::sysadminmode(false); &lt;br /&gt;}&lt;br /&gt;7. run job&lt;br /&gt;8. control w to open regular workspace (or open it from the menus, sometimes its sticky)&lt;br /&gt;9. Open the form/class via navigation&lt;br /&gt;&lt;br /&gt;observe that you can now stop in debugger as "limited" user&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3085059398240356520?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3085059398240356520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3085059398240356520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3085059398240356520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3085059398240356520'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/11/debugging-in-dynamics-ax-2012-as-non.html' title='Debugging in Dynamics AX 2012 as a non-admin Role'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7077187035018335548</id><published>2011-11-09T02:11:00.000+05:00</published><updated>2011-11-09T02:11:44.086+05:00</updated><title type='text'>Microsoft Dynamics Sure Step 2012 Launched</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Microsoft Dynamics Sure step 2012 is&amp;nbsp;officially&amp;nbsp;launched, please read the following article for more details:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://blogs.msdn.com/b/dynpartnercommunity/archive/2011/11/08/microsoft-dynamics-sure-step-2012-launched.aspx?utm_medium=facebook&amp;amp;utm_source=twitterfeed"&gt;Microsoft Dynamics Sure Step 2012&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7077187035018335548?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7077187035018335548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7077187035018335548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7077187035018335548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7077187035018335548'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/11/microsoft-dynamics-sure-step-2012.html' title='Microsoft Dynamics Sure Step 2012 Launched'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5961472692964548599</id><published>2011-10-19T17:28:00.004+05:00</published><updated>2011-10-19T17:29:15.594+05:00</updated><title type='text'>Dynamics AX 2012 Design Patterns</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Following are the design pattern for Dynamics AX 2012 development and smart customizations:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa619732.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Instantiating Application Objects Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa659249.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Searching for Records Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa879893.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;static find Method Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa672421.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;static exist Method Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa846438.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Parameter System Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa557882.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Multiselection Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa867933.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Searching for Multiple Occurrences Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa860755.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Change Company Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa557129.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Partner Hooks Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa879675.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Pack-Unpack Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa885168.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Use the Type System Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa594252.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Storno Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa636810.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Persistent Data Storage Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa848817.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Data Validation Design Pattern&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5961472692964548599?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5961472692964548599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5961472692964548599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5961472692964548599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5961472692964548599'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/10/dynamics-ax-2012-design-patterns.html' title='Dynamics AX 2012 Design Patterns'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6677623723016751000</id><published>2011-10-17T16:32:00.001+05:00</published><updated>2011-10-17T16:32:31.473+05:00</updated><title type='text'>Set focus on specific control when opening form</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To set the focus on specific control when form is open, you need to&amp;nbsp;override&amp;nbsp;the firstField() method of the form and set your desired control after super() call.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;public void firstField(int _flags=1)&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;{&lt;br /&gt;    ;&lt;br /&gt;    super(_flags);&lt;br /&gt;    desiredControlName.setFocus();&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;script&gt;&lt;/script&gt;  &lt;script&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6677623723016751000?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6677623723016751000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6677623723016751000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6677623723016751000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6677623723016751000'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/10/set-focus-on-specific-control-when.html' title='Set focus on specific control when opening form'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4067397554157461421</id><published>2011-10-17T15:18:00.002+05:00</published><updated>2011-10-17T15:19:15.056+05:00</updated><title type='text'>Dynamics AX 2012 SSRS reports patterns</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Here are the design pattern/changes that we need to&amp;nbsp;make sure&amp;nbsp;for AX 2012 SSRS report development:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="left" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-bottom-style: none; border-collapse: collapse; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; margin-left: 6.75pt; margin-right: 6.75pt; width: 535px;"&gt;&lt;tbody&gt;&lt;tr style="height: 1.0pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;b&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Functional Area&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-left: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;b&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;AX2009&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-left: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;b&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;AX2012&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 1;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Input parameters (definition)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Data contract (*)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 2;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Input parameters (validation)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Data contract (*)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 3;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Input dialog (simple)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Data contract (*)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 4;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Input dialog (complex)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;UI Builder (*)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 5;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Input parameters (modification)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Controller (*)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 6;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Dynamic query&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Query&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 7;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report data&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Table (temp)&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 8;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Business logic&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;RDP&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="height: 1.0pt; mso-yfti-irow: 9; mso-yfti-lastrow: yes;"&gt;   &lt;td style="border-top: none; border: solid windowtext 1.0pt; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 189.9pt;" valign="top" width="253"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report layout&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 67.5pt;" valign="top" width="90"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; height: 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 2.0in;" valign="top" width="192"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: 9.0pt; mso-element-left: center; mso-element-top: .05pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;"&gt;&lt;span lang="DA" style="color: black; font-family: Verdana, sans-serif; font-size: 12pt;"&gt;SSRS Report&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4067397554157461421?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4067397554157461421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4067397554157461421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4067397554157461421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4067397554157461421'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/10/dynamics-ax-2012-reports-patterns.html' title='Dynamics AX 2012 SSRS reports patterns'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8069311305416458485</id><published>2011-10-17T00:22:00.000+05:00</published><updated>2011-10-17T00:22:58.111+05:00</updated><title type='text'>Dynamics AX 2009 and Dynamics AX 2012 modules comparisons</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Following are the&amp;nbsp;enhancements&amp;nbsp;made by&amp;nbsp;Microsoft&amp;nbsp;on Dynamics AX 2012:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;For example, GL module in AX 2009 is now break into GL and Fixed assets in AX 2012.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;table border="1" cellpadding="0" cellspacing="0" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; display: table; font-size: 12px; line-height: 18px;"&gt;&lt;tbody style="display: table-row-group; font-size: 12px; line-height: 18px; vertical-align: middle;"&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&lt;div align="center" style="display: block; font-size: 12px; line-height: 18px; margin-bottom: 1.12em; margin-top: 1.12em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;AX 2009 Module&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&lt;div align="center" style="display: block; font-size: 12px; line-height: 18px; margin-bottom: 1.12em; margin-top: 1.12em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;AX 2012 Module&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;General Ledger&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;General Ledger&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Fixed Assets&amp;nbsp;&lt;span style="color: red; font-size: 12px; line-height: 18px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;(New)&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Bank&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Cash and bank management&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Accounts Payable&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Accounts Payable&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Procurement and sourcing&amp;nbsp;&lt;span style="color: red; font-size: 12px; line-height: 18px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;(New)&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Accounts Receivables&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Accounts Receivables&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Sales and Marketing&amp;nbsp;&lt;span style="color: red; font-size: 12px; line-height: 18px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;(New)&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Inventory Management&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Product information&amp;nbsp;&lt;span style="color: red; font-size: 12px; line-height: 18px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;(New)&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Inventory&amp;nbsp; and warehouse management&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Expense management&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Travel and expense management&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Production&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Production control&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Project&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Project management and accounting&lt;/td&gt;&lt;/tr&gt;&lt;tr style="display: table-row; font-size: 12px; line-height: 18px;"&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;&amp;nbsp;&lt;/td&gt;&lt;td style="display: table-cell; font-size: 12px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: inherit;" valign="top" width="319"&gt;Compliance and internal control&amp;nbsp;&lt;span style="color: red; font-size: 12px; line-height: 18px;"&gt;&lt;strong style="font-size: 12px; font-style: normal; line-height: 18px;"&gt;(New)&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8069311305416458485?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8069311305416458485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8069311305416458485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8069311305416458485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8069311305416458485'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/10/dynamics-ax-2009-and-dynamics-ax-2012.html' title='Dynamics AX 2009 and Dynamics AX 2012 modules comparisons'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-414150336194555096</id><published>2011-09-24T23:43:00.000+05:00</published><updated>2011-09-24T23:43:45.787+05:00</updated><title type='text'>Change company logo on EP home page</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here is the very useful link for displaying/changing the Dynamics AX 2009 EP home page.&lt;br /&gt;&lt;a href="http://paruvellas.wordpress.com/2010/12/10/display-company-logo-on-dynamics-ep-site-and-hide-page-title/"&gt;Display Company Logo on Dynamics EP Site and Hide Page Title&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;alternatively/in dynamics ax 2012, you can change the logo from&amp;nbsp;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ep\images\ location and change the name you your logo file to&amp;nbsp;DynamicsLogo64x64.png&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-414150336194555096?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/414150336194555096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=414150336194555096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/414150336194555096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/414150336194555096'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/09/change-company-logo-on-ep-home-page.html' title='Change company logo on EP home page'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8935637459414124290</id><published>2011-08-24T10:55:00.003+05:00</published><updated>2011-08-24T10:55:46.486+05:00</updated><title type='text'>Cannot connect to the Configuration database error – SharePoint 2010</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Resolution steps:&lt;br /&gt;1. If the WSS is in a server farm, use the “SharePoint Products and Technologies Configuration Wizard” to disconnect the server from the farm.&lt;br /&gt;2. Navigate to Start &amp;gt;Program &amp;gt; Microsoft SQL Server 2005 &amp;gt; Configuration Tools &amp;gt;SQL Server Configuration Manager&lt;br /&gt;3. Navigate to SQL Server 2005 Network Configuration &amp;gt; Protocol for MSSQLSERVER&lt;br /&gt;4. Right click Named Pipes and select Enable (if not enabled)&lt;br /&gt;5. Restart SQL Server&lt;br /&gt;6. Join back the server to server farm using “SharePoint Products and Technologies Configuration Wizard” and follow the wizards&lt;br /&gt;Note: If the installation is a stand-alone installation, then you don’t need to worry about steps 1 &amp;amp; 6&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8935637459414124290?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8935637459414124290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8935637459414124290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8935637459414124290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8935637459414124290'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/08/cannot-connect-to-configuration.html' title='Cannot connect to the Configuration database error – SharePoint 2010'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-928609241881441658</id><published>2011-08-24T01:00:00.001+05:00</published><updated>2011-08-24T01:00:38.581+05:00</updated><title type='text'>Show/Hide the dialog range field</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To hide/show the query dialog field, you need to implement/override the&amp;nbsp;&lt;b&gt;&lt;i&gt;showIndexFields()&lt;/i&gt;&lt;/b&gt; method of the dialog and return FALSE if you want to hide the field from the dialog query range.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;here is an example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;public boolean showIndexFields(tableId _tableId)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;boolean ret = true;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;switch (_tableId)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;case tableNum(YourTable):&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;ret = false;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;break;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;return ret;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-928609241881441658?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/928609241881441658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=928609241881441658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/928609241881441658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/928609241881441658'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/08/showhide-dialog-range-field.html' title='Show/Hide the dialog range field'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4976935655706123642</id><published>2011-08-24T00:54:00.001+05:00</published><updated>2011-08-24T00:54:35.245+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 Price list</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;If you are interested in knowing the cost of a Dynamics AX 2012 license, Microsoft has provided a an Excel sheet that can help you estimate the cost of your implementation.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;You can download the sheet from &lt;a href="https://mbs.microsoft.com/downloads/partner/pricing/axapta/Microsoft_Dynamics_AX_2012_Price_List.xlsm"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4976935655706123642?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4976935655706123642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4976935655706123642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4976935655706123642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4976935655706123642'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/08/dynamics-ax-2012-price-list.html' title='Dynamics AX 2012 Price list'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3033916081893712829</id><published>2011-08-01T23:52:00.001+05:00</published><updated>2011-08-01T23:52:36.941+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Drum Roll Please… Microsoft Dynamics AX 2012 is now on the market!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dynamics AX 2012 is released on 25 countries, please see the details:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="https://community.dynamics.com/b/theedge/archive/2011/08/01/drum-roll-please-microsoft-dynamics-ax-2012-is-now-on-the-market.aspx"&gt;Dynamics AX 2012 released !!!!&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3033916081893712829?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3033916081893712829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3033916081893712829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3033916081893712829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3033916081893712829'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/08/drum-roll-please-microsoft-dynamics-ax.html' title='Drum Roll Please… Microsoft Dynamics AX 2012 is now on the market!'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-358550936741394463</id><published>2011-07-26T22:32:00.000+05:00</published><updated>2011-07-26T22:32:13.082+05:00</updated><title type='text'>MS Dynamics AX 2009 EP development</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To start working on Dynamics AX 2009 EP, the following&amp;nbsp;article&amp;nbsp;will help you a lot:&lt;/span&gt;&lt;div&gt;&lt;a href="http://blog.rahulsharma.in/2009/06/ms-dynamics-ax-2009-ep-development-part.html"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dynamics AX 2009 EP Development&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-358550936741394463?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/358550936741394463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=358550936741394463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/358550936741394463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/358550936741394463'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/07/ms-dynamics-ax-2009-ep-development.html' title='MS Dynamics AX 2009 EP development'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5231447892394435317</id><published>2011-07-25T00:16:00.000+05:00</published><updated>2011-07-25T00:16:57.503+05:00</updated><title type='text'>Dynamics AX technical consultant interview questions</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;I am going to share some frequent interview questions that&amp;nbsp;generally&amp;nbsp;asked for Dynamics AX Technical consultant&amp;nbsp;position:&lt;/span&gt;&lt;div&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;How can we create primary key for a table?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;what&amp;nbsp;precautions you need for overriding fetch() method for a report?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Difference between OCC and PCC?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;How many types of MAP there in Dynamics AX?&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;What is cache lookup what is it used for?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Difference between table and views?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;why we use dialog? and how to&amp;nbsp;accomplished&amp;nbsp;it?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;what are the different type of index?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Difference b/w&amp;nbsp;cascade&amp;nbsp;+&amp;nbsp;restricted&amp;nbsp;and&amp;nbsp;restricted&amp;nbsp;delete actions?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;In which case delete_from and delete() have same result?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Explain sales/purchase order processes in AX.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;I will share more questions in my next post.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5231447892394435317?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5231447892394435317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5231447892394435317' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5231447892394435317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5231447892394435317'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/07/dynamics-ax-technical-consultant.html' title='Dynamics AX technical consultant interview questions'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2876084947073462914</id><published>2011-07-13T12:44:00.001+05:00</published><updated>2011-07-13T12:45:20.774+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 White papers are now available</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dynamics AX 2012 white papers are now available for download:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.microsoft.com/download/en/search.aspx?q=AX%202012"&gt;Dynamics AX 2012 white papers&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2876084947073462914?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2876084947073462914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2876084947073462914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2876084947073462914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2876084947073462914'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/07/dynamics-ax-2012-white-papers-are-now.html' title='Dynamics AX 2012 White papers are now available'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2111817608386215949</id><published>2011-06-25T01:02:00.000+05:00</published><updated>2011-06-25T01:02:58.320+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>We have done it, We proud to be the part of Dynamics AX 2012 development and now its ready for City of Redmond</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As My company own the public sector solution for the Dynamics AX 2012 release and I am glad to see the implementation of Microsoft Dynamics AX 2012 for the City of Redmond USA, see this case study:&lt;br /&gt;&lt;a href="http://www.microsoft.com/casestudies/Microsoft-Dynamics-AX-2012/City-of-Redmond/City-Meets-the-Future-with-Accountability-and-Efficiency-by-Deploying-Powerful-ERP-System/4000010316"&gt;Microsoft Case Study: Microsoft Dynamics AX 2012 - City of Redmond&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2111817608386215949?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2111817608386215949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2111817608386215949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2111817608386215949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2111817608386215949'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/06/we-have-done-it-we-proud-to-be-part-of.html' title='We have done it, We proud to be the part of Dynamics AX 2012 development and now its ready for City of Redmond'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8372131322354412109</id><published>2011-06-22T20:16:00.001+05:00</published><updated>2011-06-29T12:27:47.974+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Upgrade Dynamics AX 4.0/AX 2009 to Dynamics AX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;  &lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 14pt; mso-bidi-font-size: 11.0pt;"&gt;Setup source Environment&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;u1:p&gt;&lt;/u1:p&gt;  &lt;div style="text-align: justify;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;1.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Import the PreProcessing (databaseupgrade\xpo\UpgradeAX5.xpo) XPO, located in the installation CD folder and Un check "Import with ID values:"&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;2.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Open the PreProcessing Checklist "SysCheckList_PreUpgrade50" located in the AX50PreUpgradeFramework project.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;3.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;The Preprocessing Checklist appears, if your checklists has this @ABC123 instead of text, and then do this to get the missing label file. To apply the new label files in your AX4/5 machine (if you are working with preprocessing framework):&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Copy the label file to the label folder in your AX4/2009 machine&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Restart the AOS&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Label folder in AX4/2009 is a sub folder under ...\Application\Appl\ where you can find *.ald files in it.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;4.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Run through the PreProcessing Checklist Items to prepare the database for Upgrade&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If upgrading AX 2009, and the upgrade scripts don't run after opening the cockpit, jump to step #12 and follow the steps there to setup the batch server (AX4 does not require setting up a batch server). Then come back to this point and continue.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If upgrading AX4, You need to compile the ReleaseUpdate* classes and the ReleaseUpdateCockpit form.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l3 level1 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;If upgrading AX4, when running the cockpit run multiple instances of AX4:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 1in; mso-add-space: auto; mso-list: l3 level2 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Start the new Microsoft Dynamics AX client.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 1in; mso-add-space: auto; mso-list: l3 level2 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Select Basic &amp;gt; Periodic &amp;gt; Batch &amp;gt; Processing. &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 1in; mso-add-space: auto; mso-list: l3 level2 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;A batch dialog appears.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 1in; mso-add-space: auto; mso-list: l3 level2 lfo1; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Add DataUpgrade in the Group field, and click OK.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;5.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Inventory Dimension Group Upgrade checklist Item, click on the “Map dimension groups 1:1” button (Do not click on the “Assign identical groups” button) and then click on the “Set to Ready For Upgrade” button. &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;6.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the System Parameters checklist Item, select “en-us” as the default language and click on the “Set to Ready for Upgrade” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;7.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Company Priority setup, click on the “Set to Ready for Upgrade” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;8.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Product Upgrade Form, click on the Synchronize button and then on the Product Mapping -&amp;gt; Map all items 1:1. Click on the “Set to Ready for Upgrade” button after doing these steps.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;9.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Units form, click on the “Automatically assignment” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.75in; mso-add-space: auto; mso-list: l0 level2 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;a.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Set all decimals to 2&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.75in; mso-add-space: auto; mso-list: l0 level2 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;b.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Set all Unit classes to “Length”&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.75in; mso-add-space: auto; mso-list: l0 level2 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;c.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Click on the “Validate” button to make sure no errors are found&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.75in; mso-add-space: auto; mso-list: l0 level2 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;d.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Click on the “Set to Ready for Upgrade” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;10.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Pre-Upgrade of Unit Conversions checklist item click on the Validate button and then on the “Set to Ready for Upgrade” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;11.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Pre-Upgrade of Unit Texts click on the Validate button and then on the “Set to Ready for Upgrade” button.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;12.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Pre-Upgrade Data checklist item you might need to configure the Batch Server and Batch Server Groups if the Live PreProcessing scripts don’t start running. In order to do so, go to Administration\Setup\Server Configuration&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;13.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Make sure that only the machine you are using has the Is Batch Server checkbox checked. Now go to the Batch Server Groups tab and select the DataUpdate Batch Server Group&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;14.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Another configuration that is required to start running these jobs is the Batch Group form. You can access this in Administration\Setup\Batch Groups&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;15.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Select the DataUpdate Batch Group and go to the Batch Servers tab.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;16.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Make sure the machine you’re running the upgrade on is on the Selected Servers list on the left side pane.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;17.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;After running the Live PreUpgrade, continue with the next checklist items (Validate Pre Upgrade, check Single User Mode and Single User Mode Upgrade)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l0 level1 lfo2; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;18.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Once the checklist is finished, the PreProcessing stage is done. Uninstall AX50 (don’t drop the database) and you are ready to go to the AX6 steps.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="tab-stops: list .5in; text-align: justify; text-indent: -0.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 14pt; mso-bidi-font-size: 11.0pt;"&gt;Starting an Upgrade from the Target Environment&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;u1:p&gt;&lt;/u1:p&gt;  &lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;1.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Install Dynamics AX 2012.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;2.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Setup Ax 2012 pointing the AOS to a new Database . Specify a different database name for the Model Database. Make sure you select the "&lt;b&gt;Register Database for Upgrade checkbox:&lt;/b&gt;"&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;3.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;At this stage, you should have 3 databases in your system: Database&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l2 level1 lfo4; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The AX50 PreProcessed database&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l2 level1 lfo4; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The new AX6 database&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.5in; mso-add-space: auto; mso-list: l2 level1 lfo4; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The new AX2012 model database&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;4.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Start AX 2012 and run through the Upgrade checklist&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;5.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In the Provide License Information step, specify the license.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="margin-left: 0.25in; mso-list: l1 level1 lfo3; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="mso-list: Ignore;"&gt;6.&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;At this point, the Target Environment upgrade process is started. Make your way through the first five checklist items. &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="tab-stops: list .5in; text-align: justify; text-indent: -0.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 14pt; mso-bidi-font-size: 11.0pt;"&gt;Data Upgrade Stages&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;u1:p&gt;&lt;/u1:p&gt;  &lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Source DB connection step:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the Source DB connection step, specify the server name where the Source Database is located and the Source Database name. Click OK once this information is entered.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;PreSynchronize step:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This step loads the Upgrade cockpit. Depending on which stage you started the Upgrade Process; you might need to configure the Batch Groups and Batch Servers. Once this configuration is set, click the Run button. PreSync scripts should start running at this stage.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Create Tables Step:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This step synchronizes the database. No special steps need to be taken here.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Generate table and field mapping:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This step generates table and field mapping between source and target systems. There should be no mapping with error. &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Generate Bulk Copy and Script Prioritization Step:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Bulk Copy Priorities and Script-Table dependencies are resolved in this step. No special steps need to be taken here.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Launch Data Upgrade Step:&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This step loads the Upgrade cockpit. Once the cockpit is loaded, click on the Run button and the Post Sync scripts should start running.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is where the data is actually copied from the Source Database to the Target Database based on the Mappings found in the Generate Table and Field Mapping step. &lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8372131322354412109?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8372131322354412109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8372131322354412109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8372131322354412109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8372131322354412109'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/06/upgrade-dynamics-ax-40ax-2009-to.html' title='Upgrade Dynamics AX 4.0/AX 2009 to Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8779349889170112180</id><published>2011-06-21T00:18:00.000+05:00</published><updated>2011-06-21T00:18:45.370+05:00</updated><title type='text'>Install Dynamics AX 2009 Reporting Extensions with SQL server 2008</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Sometime back, I have experience on interesting issue while installing Reporting Extensions with SQL server 2008, When I run the Setup, I get the following message : "You must install SQL server 2005 Reporting Services Service Pack 2 before installing the report extensions". Here is the workaround&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;1. Locate the Dynamics AX 2009 Reporting services dll from the extracted AX 2009 SP1 folder[\\AX2009SP1\support\axsetupresources\microsoft.dynamics.setup.reportingservices.dll;File Version - 5.0.1000.52]&lt;/li&gt;&lt;li&gt;Extract the AX 2009 .iso to a folder&lt;/li&gt;&lt;li&gt;Copy the microsoft.dynamics.setup.reportingservices.dll into the folder: &lt;a href="file://dynamicsax/Msi/Components32/Program"&gt;\\DynamicsAX\Msi\Components32\Program&lt;/a&gt; Files\Microsoft Dynamics AX\50 and Setup&lt;a href="file://dynamicsax/Msi/Components64/Program"&gt;\\DynamicsAX\Msi\Components64\Program&lt;/a&gt; Files\Microsoft Dynamics AX\50\Setup&lt;/li&gt;&lt;li&gt;It will ask to replace the existing dll having File Version - 5.0.593.0. Say Yes and replace.&lt;/li&gt;&lt;li&gt;5. Then Install AX Reporting Services extensions. It works fine and the Reporting Extensions are installed nice. &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8779349889170112180?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8779349889170112180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8779349889170112180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8779349889170112180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8779349889170112180'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/06/install-dynamics-ax-2009-reporting.html' title='Install Dynamics AX 2009 Reporting Extensions with SQL server 2008'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2595915175565598260</id><published>2011-06-20T13:03:00.003+05:00</published><updated>2011-10-05T14:42:18.302+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 Programming model</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;The following table lists which programming model or models are best used in each development pattern.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumShading2Accent6" style="border-collapse: collapse; border: currentColor; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-table-layout-alt: fixed;"&gt;&lt;tbody&gt;&lt;tr style="height: 4.35pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td colspan="2" style="background-color: transparent; border: 1pt solid windowtext; height: 4.35pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 42.22%;" valign="top" width="42%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Design Pattern &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color: transparent; border-color: windowtext windowtext windowtext rgb(0, 0, 0); border-style: solid solid solid none; border-width: 1pt 1pt 1pt 0px; height: 4.35pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 57.78%;" valign="top" width="57%"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Programming Model &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;tr style="height: 11.4pt; mso-yfti-irow: 1;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 11.4pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/td&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 11.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Strongly typed .NET   interop to X++ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/td&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 11.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Services &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/td&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 11.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Object-oriented   development in X++ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: black;"&gt;&lt;&gt;&amp;nbsp;&amp;nbsp;  &lt;/&gt;&lt;/span&gt;&lt;&gt;&lt;/&gt;&lt;tr style="height: 37.9pt; mso-yfti-irow: 2;"&gt;&lt;td style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 37.9pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Customization &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 37.9pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use to access functionality implemented in X++ from   .NET. Where appropriate, you should use eventing to decouple customization   business logic implemented in .NET. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border: 0px rgb(0, 0, 0); height: 37.9pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Not recommended &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 37.9pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Layer-based X++ source code customization is   supported. Where appropriate, you should use eventing to decouple   customization business logic implemented in X++. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;tr style="height: 15.2pt; mso-yfti-irow: 3;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border: 1pt solid windowtext; height: 15.2pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Integration &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Not recommended &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: windowtext windowtext windowtext rgb(0, 0, 0); border-style: solid solid solid none; border-width: 1pt 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use service interfaces to access Microsoft Dynamics   AX. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Not recommended &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;tr style="height: 15.2pt; mso-yfti-irow: 4;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;External application   development &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use if your Windows application runs only on the AOS   server. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use service interfaces to access Microsoft Dynamics   AX in all other cases, including applications that are not Windows-based. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Not recommended &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;tr style="height: 15.2pt; mso-yfti-irow: 5;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Report development &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Not recommended &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 16;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use service interfaces when implementing data   methods as your report data source type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use when developing an RDP data   source type for your reports &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/tr&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;tr style="height: 15.2pt; mso-yfti-irow: 6; mso-yfti-lastrow: yes;"&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext; border-style: none solid solid; border-width: 0px 1pt 1pt; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 22.26%;" valign="top" width="22%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #FDEADA; mso-style-textfill-fill-colortransforms: &amp;quot;lumm=20000 lumo=80000&amp;quot;; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themetint: 51;"&gt;&lt;span style="color: black;"&gt;Enterprise Portal   application development &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use from Enterprise Portal applications to access   business logic that is in X++ classes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 19.96%;" valign="top" width="19%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 80;"&gt;&lt;span style="font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: black;"&gt;Use services to access Microsoft Dynamics AX   functionality, especially if the application is Internet facing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;td style="background-color: transparent; border-color: rgb(0, 0, 0) windowtext windowtext rgb(0, 0, 0); border-style: none solid solid none; border-width: 0px 1pt 1pt 0px; height: 15.2pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt; width: 37.8%;" valign="top" width="37%"&gt;&lt;div class="Default" style="margin: 0in 0in 0pt; mso-yfti-cnfc: 64;"&gt;&lt;span style="color: #e46c0a; font-size: 10pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: #E46C0A; mso-style-textfill-fill-themecolor: accent6; mso-themecolor: accent6; mso-themeshade: 191;"&gt;&lt;span style="color: windowtext;"&gt;&lt;span style="color: black;"&gt;Not recommended&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size: small;"&gt;  &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2595915175565598260?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2595915175565598260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2595915175565598260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2595915175565598260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2595915175565598260'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/06/dynamics-ax-2012-programming-model.html' title='Dynamics AX 2012 Programming model'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-666715842827438057</id><published>2011-06-09T15:00:00.000+05:00</published><updated>2011-06-09T15:00:35.006+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 Step By Step Installation</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dynamics AX 2012 Step By Step Installation is available on MSDN&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.msdn.microsoft.com/AX-2012-Step-By-Step-a60a28d9"&gt;AX 2012 Step By Step Installation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-666715842827438057?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/666715842827438057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=666715842827438057' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/666715842827438057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/666715842827438057'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/06/dynamics-ax-2012-step-by-step.html' title='Dynamics AX 2012 Step By Step Installation'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8042920746698913429</id><published>2011-05-30T16:25:00.002+05:00</published><updated>2011-06-09T15:02:08.609+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>How to Debug batch jobs and service operations in Dynamics AX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;All batch jobs and service operations now run in managed code (IL) and require different debugging steps.&amp;nbsp; Rather than setting breakpoints within X++, you need to set them within the IL code that corresponds to the X++ code and debug in Visual Studio.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Open Visual Studio as 'administrator' and attach the debugger to the Ax32Serv.exe process.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;Note that it may also be necessary to change the ‘Attach to’ selection to ‘Managed (v4.0) code’ and make sure “just my code” is unchecked in VS: tools-&amp;gt;options-&amp;gt;debugging-&amp;gt;General&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Once done, open up the file you want to debug in Visual Studio. All of the X++ code is compiled into IL and can be found in the following directory after deployment: &lt;span style="color: orange;"&gt;..\Program Files\Microsoft Dynamics Ax\6.0\Server\AxaptaDev\Bin\XppIL\source\&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Set a breakpoint in the file you opened. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Go to Ax and run the process in batch mode, or execute the service operation. This will end up hitting your breakpoint, provided you set it in the right place.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: Verdana, sans-serif; font-size: small;"&gt;If you make some changes to X++ code and want those changes reflected in the generated IL code, you need to do the following AFTER you have compiled the X++ code.Once done, your changes will be reflected in your next debugging session:&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8042920746698913429?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8042920746698913429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8042920746698913429' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8042920746698913429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8042920746698913429'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/how-to-debug-batch-jobs-and-service.html' title='How to Debug batch jobs and service operations in Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3157058992460140721</id><published>2011-05-30T16:11:00.003+05:00</published><updated>2011-06-09T15:03:07.197+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 AXUtil.exe command-line utility for models</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A new command-line utility, called axutil.exe is used to work with models and model files. You can use this utility to create, export, import, uninstall, and list installed models. You can use the axutil.exe Help for an overview of various commands and parameters used by each command. The setup program uses this utility to install the Microsoft Dynamics AX 2012&amp;nbsp;application.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3157058992460140721?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3157058992460140721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3157058992460140721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3157058992460140721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3157058992460140721'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/dynamics-ax-2012-axutilexe-command-line.html' title='Dynamics AX 2012 AXUtil.exe command-line utility for models'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2214087161398797206</id><published>2011-05-30T16:09:00.001+05:00</published><updated>2011-06-09T15:03:15.920+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Breakpoints in forms button click() method is now operational in Dynamics AX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Great news for the developers, the pain point on Dynamics AX 2009 related to the unavailability of breakpoint in form's button click() method&amp;nbsp;is no longer exist in Dynamics AX 2012. User can insert breakpoint in from's button click method as he can do it in other locations. Traditionally user write 'breakpoint' to debug the code on form's click() method.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2214087161398797206?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2214087161398797206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2214087161398797206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2214087161398797206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2214087161398797206'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/breakpoints-in-forms-button-click.html' title='Breakpoints in forms button click() method is now operational in Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4463203354059886235</id><published>2011-05-30T15:55:00.002+05:00</published><updated>2011-06-09T15:03:23.203+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics Ax 2012 - accessing the correct QueryBuildDataSource for a FormDataSource</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Traditionally within Forms it has been rather cumbersome to get to the QueryBuildDataSource for a specific FormDataSource within Forms. You had to write code such as this: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;public void FormDataSource::init() &lt;br /&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryBuildDataSource qbds; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; qbds = this.query().dataSourceTable(tableNum(CustTable)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That’s all fine and dandy if you have a simple Form, but on some Forms you might have multiple instances of CustTable, especially with the advent of ReferenceDataSources. In these cases you might fall back to using the name of the FormDataSource to ensure you get the correct QueryBuildDataSource:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;public void FormDataSource::init() &lt;br /&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryBuildDataSource qbds; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; qbds = this.query().dataSourceName(this.name()); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is also problematic in the cases that a different query is applied to the Form, such as in the CopyCallerQuery from a List Page to a Details Page. This makes it all very confusing and difficult, and to tell you the truth, we have a very long method in the kernel that finds the correct QueryBuildDataSource for the respective FormDataSource. The good news is those methods are now exposed to X++!&lt;br /&gt;With Dynamics AX 2012 you can now use the methods “FormDataSource::queryBuildDataSource()” and “FormDataSource::queryRunQueryBuildDataSource()”. The first method will return you the QueryBuildDataSource in the FormDataSource.query(), while the second will return you the QueryBuildDataSource in the FormDataSource.queryRun().query(). There’ll be another blog entry discussing when using each is appropriate, but the short of it is use the first whenever you want to modify the QueryBuildDataSource and have the modification stay throughout the life of the Form (such as adding developer ranges that you never want the user to be able to change). The second should be used when you want to make modifications that will just live for the current “executeQuery” call and will be cleared whenever the user clicks on the “Clear Filters” button.&lt;br /&gt;Want to see any additional APIs? Let us know and we can consider adding them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4463203354059886235?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4463203354059886235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4463203354059886235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4463203354059886235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4463203354059886235'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/dynamics-ax-2012-accessing-correct.html' title='Dynamics Ax 2012 - accessing the correct QueryBuildDataSource for a FormDataSource'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-255929596590155232</id><published>2011-05-30T15:52:00.004+05:00</published><updated>2011-06-09T15:03:41.574+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Non admin debugging in Dynamics AX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;1.) Add the admin to the roles that you want to test. Note that it is ok to leave the admin user in the system administration role. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2.) Open a dev workspace and close the application work spaces.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3.) Set applicable breakpoints.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;4.) Create a job with the following line of code and execute: &lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SecurityUtil::sysAdminMode(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;5.) So at this point the current session is in “non-admin mode”.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;6.) Use Ctrl+W to open the application work space. You should notice that few menus / menu items are available&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;7.) Run the test and any break points set will be hit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Current constraints / limitations&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;When SecurityUtil::sysAdminMode(…) is invoked, it is only applicable to the current session. So you must use CTRL+W to open the app workspace; launching a new client will not work.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Since this is scoped to the current session scenarios like run-as are not supported and also services / EP is not supported at this point.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-255929596590155232?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/255929596590155232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=255929596590155232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/255929596590155232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/255929596590155232'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/non-admin-debugging-in-dynamics-ax-2012.html' title='Non admin debugging in Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2012115291302959489</id><published>2011-05-30T12:34:00.000+05:00</published><updated>2011-05-30T12:34:30.937+05:00</updated><title type='text'>Trade and Logistics training</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Such a great side for SCM learning:&lt;br /&gt;&lt;a href="http://www.dynamicsaxtraining.com/trade-and-logistics-training"&gt;Dynamics AX training&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2012115291302959489?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2012115291302959489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2012115291302959489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2012115291302959489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2012115291302959489'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/05/trade-and-logistics-training.html' title='Trade and Logistics training'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5873217161905609301</id><published>2011-04-18T03:38:00.002+05:00</published><updated>2011-06-09T15:03:56.874+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Microsoft Dynamics AX 2012 Beta</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here is the list of&amp;nbsp;tools and resources available for developers working with the Dynamics AX 2012 Beta:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Getting Started with the Beta&lt;/h3&gt;&lt;table class="headlines_table"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td class="headlines_td_image" valign="top"&gt;&lt;a href="https://mbs.microsoft.com/partnersource/marketing/marketingcollateral/demos/AX2012DemoToolsMaterials" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;" title="Download the Beta VM from PartnerSource! (requires valid PartnerSource login)"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img align="left" alt="Download the Beta VM from PartnerSource! (requires valid PartnerSource login)" border="0" src="http://i.msdn.microsoft.com/ee402630.Download_sm(en-us,MSDN.10).png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;td class="headlines_td_text" valign="top"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;a href="https://mbs.microsoft.com/partnersource/marketing/marketingcollateral/demos/AX2012DemoToolsMaterials" title="Download the Beta VM from PartnerSource! (requires valid PartnerSource login)"&gt;Download  the Beta VM from PartnerSource! (requires valid PartnerSource  login)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td class="headlines_td_image" valign="top"&gt;&lt;a href="https://mbs.microsoft.com/customersource/downloads/servicepacks/AX2012DemoToolsMaterials" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;" title="Download the Beta VM from CustomerSource! (requires valid CustomerSource login)"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img align="left" alt="Download the Beta VM from CustomerSource! (requires valid CustomerSource login)" border="0" src="http://i.msdn.microsoft.com/ee402630.Download_sm(en-us,MSDN.10).png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;td class="headlines_td_text" valign="top"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;a href="https://mbs.microsoft.com/customersource/downloads/servicepacks/AX2012DemoToolsMaterials" title="Download the Beta VM from CustomerSource! (requires valid CustomerSource login)"&gt;Download  the Beta VM from CustomerSource! (requires valid CustomerSource  login)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td class="headlines_td_image" valign="top"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa496079.aspx" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;" title="Go to the Developer Help on MSDN"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img align="left" alt="Go to the Developer Help on MSDN" border="0" src="http://i.msdn.microsoft.com/ee402630.MSDN_sm(en-us,MSDN.10).png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;td class="headlines_td_text" valign="top"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa496079.aspx" title="Go to the Developer Help on MSDN"&gt;Go to the  Developer Help on MSDN&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td class="headlines_td_image" valign="top"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg845327(AX.60).aspx" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;" title="Read About What's New for Developers on MSDN"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img align="left" alt="Read About What's New for Developers on MSDN" border="0" src="http://i.msdn.microsoft.com/ee402630.Learn_sm(en-us,MSDN.10).png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;td class="headlines_td_text" valign="top"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg845327(AX.60).aspx" title="Read About What's New for Developers on MSDN"&gt;Read  About What's New for Developers on MSDN&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td class="headlines_td_image" valign="top"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=215588" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;" title="Download the Document What's New for Developers in Microsoft Dynamics AX 2012"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;img align="left" alt="" border="0" src="http://i.msdn.microsoft.com/ee402630.Articles_sm(en-us,MSDN.10).png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;td class="headlines_td_text" valign="top"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=215588" title="Download the Document What's New for Developers in Microsoft Dynamics AX 2012"&gt;Download the  Document What's New for Developers in Microsoft Dynamics AX  2012&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;courtesy by &lt;a href="http://msdn.microsoft.com/en-us/dynamics/ax/gg712261"&gt;MSDN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5873217161905609301?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5873217161905609301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5873217161905609301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5873217161905609301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5873217161905609301'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/microsoft-dynamics-ax-2012-beta.html' title='Microsoft Dynamics AX 2012 Beta'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6295697294774531549</id><published>2011-04-18T03:29:00.002+05:00</published><updated>2011-06-09T15:04:02.956+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Dynamics AX 2012 Hands on Labs</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here is the list of new&amp;nbsp;enhancement&amp;nbsp;made on Dynamics AX 2012 release:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Workflow%20Implementation.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Workflow Implementation&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Accounts%20Payable.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Accounts Payable&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Accounts%20Receivable%20Enhancements.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Accounts Receivable  Enhancements&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Expense%20Management.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Expense Management&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Migrating%20Reports%20to%20SSRS.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Migrating Reports to SSRS&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Employee%20Procurement.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Employee Procurement&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Client%20Forms.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Client Forms&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Export%20Extend%20and%20Refresh.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Export Extend and Refresh&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Edit%20Budgets%20in%20Excel.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Edit Budgets in Excel&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Sales%20Quotations%20in%20Word.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Sales Quotations in Word&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Import%20Data%20Using%20Excel.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Import Data Using Excel&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri, sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="font-family: Calibri, sans-serif;"&gt;&lt;a href="http://dynamics.demomate.com/PS/Dynamics%20AX/Project%20Accounting.html"&gt;&lt;span style="font-family: arial, helvetica, sans-serif;"&gt;Project  Accounting&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Thats it !!!!!!!!!!!!!!!!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6295697294774531549?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6295697294774531549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6295697294774531549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6295697294774531549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6295697294774531549'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/dynamics-ax-2012-hands-on-labs.html' title='Dynamics AX 2012 Hands on Labs'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8255027039795157503</id><published>2011-04-15T11:51:00.001+05:00</published><updated>2011-05-30T15:58:16.123+05:00</updated><title type='text'>Creating transfer order through X++ code</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;To create a transfer oder via a code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.clear();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.initValue();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;numberSequenceReference = InventParameters::numRefTransferId();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;numberSeq =&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;numberSeq::newGetNumFromCode(numberSequenceReference.NumberSequence);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.TransferId = numberSeq.num();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.InventLocationIdFrom = fromloc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.modifiedField(fieldNum(InventTransferTable,InventLocationIdFrom));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.InventLocationIdTo = toloc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.modifiedField(fieldNum(InventTransferTable,InventLocationIdTo));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.TransferStatus = InventTransferStatus::Created;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferTable.insert();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.clear();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.initFromInventTransferTable(inventTransferTable,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;NoYes::Yes);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;nventTransferLine.ItemId = item;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.initFromInventTable(InventTable::find(item));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.QtyTransfer = qty_ship;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.QtyShipNow = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.QtyReceiveNow = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;inventTransferLine.insert();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also set the two fields:&lt;br /&gt;&lt;br /&gt;QtyRemainShip and QtyRemainReceive to the value of QtyTransfer when you&amp;nbsp;create the line.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8255027039795157503?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8255027039795157503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8255027039795157503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8255027039795157503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8255027039795157503'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/creating-transfer-order-through-x-code.html' title='Creating transfer order through X++ code'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4023903876160196893</id><published>2011-04-11T15:47:00.000+05:00</published><updated>2011-04-11T15:47:43.662+05:00</updated><title type='text'>Dynamics AX 2012 Developer papers is now available on MSDN</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The developer documentation for Dynamics AX 2012 is now available on MSDN&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/dynamics/ax/gg712261"&gt;Microsoft Dynamics AX 2012 Beta&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4023903876160196893?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4023903876160196893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4023903876160196893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4023903876160196893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4023903876160196893'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/dynamics-ax-2012-developer-papers-is.html' title='Dynamics AX 2012 Developer papers is now available on MSDN'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6471315913351742386</id><published>2011-04-06T12:53:00.004+05:00</published><updated>2011-05-30T15:59:53.585+05:00</updated><title type='text'>Display all/specific AOT tables in a lookup</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;For displaying all/specific AOT objects like tables in the lookup control, we need to iterate the&amp;nbsp;UtilidElements table with our desired criteria.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;static void lookupAOTTables(FormStringControl _ctrl)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SysTableLookup &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sysTableLookup =&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SysTableLookup::newParameters(tablenum(UtilidElements), _ctrl);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Query &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; query = new Query();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QueryBuildDataSource &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;queryBuildDataSource;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QueryBuildRange &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nameQBR, typeQBR;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sysTableLookup.addLookupfield(fieldnum(UtilidElements, Name));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sysTableLookup.addLookupfield(fieldnum(UtilidElements, Id));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;queryBuildDataSource = query.addDataSource(tablenum&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (UtilidElements));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameQBR = queryBuildDataSource.addRange(fieldnum(UtilidElements,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nameQBR.value('Cust*');&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;typeQBR = queryBuildDataSource.addRange(fieldnum(UtilidElements, recordType));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;typeQBR.value(SysQuery::value(UtilElementType::Table));&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sysTableLookup.parmQuery(query);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sysTableLookup.performFormLookup();&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6471315913351742386?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6471315913351742386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6471315913351742386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6471315913351742386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6471315913351742386'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/display-allspecific-aot-tables-in.html' title='Display all/specific AOT tables in a lookup'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-397887390847432234</id><published>2011-04-01T00:28:00.000+05:00</published><updated>2011-04-01T00:28:59.640+05:00</updated><title type='text'>Count total number of records</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To count number of records in a query, you just need check it through&amp;nbsp;SysQuery::countTotal(QueryRun)&amp;nbsp;and if the query have more than one data sources use&amp;nbsp;SysQuery::countLoops(QueryRun)&amp;nbsp;instead of SysQuery::countTotal(QueryRun).&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Happy Daxing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-397887390847432234?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/397887390847432234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=397887390847432234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/397887390847432234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/397887390847432234'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/04/count-total-number-of-records.html' title='Count total number of records'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3373770217963516853</id><published>2011-03-15T14:57:00.001+05:00</published><updated>2011-03-15T14:59:51.133+05:00</updated><title type='text'>Error executing code: The method has been called with an invalid number of parameters</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;One of the great features of Dynamics AX is the rich integration with other applications or services. The Dynamics AX client is for example exchanging data with Microsoft Office applications like Microsoft Office Excel or Microsoft Office Outlook. Some of these interactions are performed using COM. When the Dynamics AX Client is using COM for the data exchange in certain situation it can happen you are getting confronted with one of the following error message:&lt;br /&gt;&lt;div style="color: red; margin-left: 40px; margin-right: 40px;"&gt;&lt;ul&gt;&lt;li&gt;Error executing code: The method has been called with an invalid number of parameters&lt;/li&gt;&lt;li&gt;The number of arguments provided is different from the number of arguments accepted by the method &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;Certain situations means, that you are not always getting this error message but only sometimes and the error is not reproducible. The chance of getting this error message is higher when you continue to work in other applications while the Dynamics AX client is performing the COM operation. &lt;br /&gt;One reason for running into this issue &lt;em&gt;can be &lt;/em&gt;if the Windows Operating System is replacing the Dynamics AX application window by a &lt;em&gt;ghost window&lt;/em&gt;. &lt;br /&gt;When Dynamics AX starts a lengthy COM operation, it is not responding to messages sent by the Windows Operating System in time. So Windows supposes Dynamics AX has stopped responding. When this happens the Dynamics AX application window is replaced by a ghost window until Dynamics AX resumes. Window ghosting is a nice feature that allows the user to minimize, move or close the main window even if the application is not responding. You can easily identify a ghost window as it shows &lt;em&gt;(Not responding) &lt;/em&gt;in the window title. &lt;br /&gt;Unfortunately the replacement of the Dynamics AX application window by the ghost window can interfere the COM operation and result in the above error message. &lt;br /&gt;Therefore it can be helpful to turn window ghosting for the Dynamics AX Client off:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Locate the Dynamics AX shortcut in the Windows Start Menu &lt;/li&gt;&lt;li&gt;Click with the right mouse button on the shortcut and select &lt;em&gt;Properties&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Go to the &lt;em&gt;Compatibility &lt;/em&gt;tab&lt;/li&gt;&lt;li&gt;Enable the checkbox &lt;em&gt;Run this program in Compatibility mode for&lt;/em&gt; and select &lt;em&gt;Windows XP (Service Pack 2)&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;Please note:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We have seen this issue most on &lt;em&gt;Windows Vista&lt;/em&gt; and &lt;em&gt;Windows Server 2008&lt;/em&gt; but this issue is not limited to those two&lt;/li&gt;&lt;li&gt;Window ghosting is not the only cause of this issue, so you might continue to see the error message even if window ghosting was turned off&lt;/li&gt;&lt;/ul&gt;But sometime there exists several possibilities resulting in this situation and disabling &lt;em&gt;Window Ghosting &lt;/em&gt;has proven as workaround in some of those. By now we have found some other workarounds as well. But so far there is no &lt;em&gt;once for all &lt;/em&gt;solution.&lt;br /&gt;Here are the workarounds we know so far...&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Workaround 1: &lt;/span&gt;Disable &lt;em&gt;Window Ghosting &lt;/em&gt;as described in this post.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Workaround 2: &lt;/span&gt;Debug the X++ code down to the line that is causing the error. Once identified, insert one line before this statement a call to the &lt;em&gt;yield&lt;/em&gt; method of the &lt;em&gt;xInfo&lt;/em&gt; class.&lt;br /&gt;&lt;strong&gt;&amp;nbsp; Example:&lt;/strong&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp; infolog.yield();&lt;br /&gt;&amp;nbsp; namespace = outlook.getNamespace(#mapidef);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Workaround 3: &lt;/span&gt;Debug the X++ code down to the line that is causing the error. Once identified, place the statement inside a &lt;em&gt;try / catch &lt;/em&gt;block. In the catch block simply &lt;em&gt;retry&lt;/em&gt; the operation.&lt;br /&gt;&lt;strong&gt;&amp;nbsp; Example:&lt;/strong&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp; &lt;/span&gt;int retryCount = 3;&lt;br /&gt;&amp;nbsp; //...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp; try&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; namespace = outlook.getNamespace(#mapidef);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; catch(Exception::Error)&lt;br /&gt;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retryCount--;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(retryCount &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retry;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw(Exception::Error);&lt;br /&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3373770217963516853?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3373770217963516853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3373770217963516853' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3373770217963516853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3373770217963516853'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/03/error-executing-code-method-has-been.html' title='Error executing code: The method has been called with an invalid number of parameters'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6815888739577245774</id><published>2011-03-07T19:18:00.001+05:00</published><updated>2011-05-30T16:01:09.838+05:00</updated><title type='text'>Dynamics AX -  code to Read/Write data to excel</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;Writing Data to Excel file&lt;/b&gt;&lt;br /&gt;How it works &lt;br /&gt;1. Use SysExcelApplication class to create excel file.&lt;br /&gt;2. Use SysExcelWorkbooks and SysExcelWorkbook to create a blank workbook(by default 3 worksheets will be available).&lt;br /&gt;3. Use SysExcelWorkSheets to select worksheet for writing data.&lt;br /&gt;4. SysExcelCells to select the cells in the excel for writing the data.&lt;br /&gt;5. SysExcelCell to write the data in the selected cells. &lt;br /&gt;6. Once you done with write operation use SysExcelApplication.visible to open &lt;br /&gt;file. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;static void Write2ExcelFile(Args _args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;InventTable inventTable;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelApplication application; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorkbooks workbooks;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorkbook workbook;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorksheets worksheets;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorksheet worksheet;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelCells cells;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelCell cell;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int row;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;application = SysExcelApplication::construct();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;workbooks = application.workbooks();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;workbook = workbooks.add();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;worksheets = workbook.worksheets();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;worksheet = worksheets.itemFromNum(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cells = worksheet.cells();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cells.range('A:A').numberFormat(&lt;/span&gt;&lt;a href="mailto:'@'"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;'@'&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell = cells.item(1,1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell.value("Item");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell = cells.item(1,2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell.value("Name");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;row = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;while select inventTable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;row++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell = cells.item(row, 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell.value(inventTable.ItemId);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell = cells.item(row, 2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cell.value(inventTable.ItemName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;application.visible(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reading Data from Excel File&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;static void ReadExcel(Args _args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelApplication application;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorkbooks workbooks;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorkbook workbook;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorksheets worksheets;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelWorksheet worksheet;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SysExcelCells cells;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;COMVariantType type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;int row;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ItemId itemid;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Name name;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;FileName filename;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;application = SysExcelApplication::construct();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;workbooks = application.workbooks();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;//specify the file path that you want to read&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;filename = "C:\\item.xls";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;workbooks.open(filename);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;catch (Exception::Error)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;throw error("File cannot be opened.");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;workbook = workbooks.item(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;worksheets = workbook.worksheets();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;worksheet = worksheets.itemFromNum(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;cells = worksheet.cells();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;row++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;itemId = cells.item(row, 1).value().bStr();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;name = cells.item(row, 2).value().bStr();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;info(strfmt('%1 - %2', itemId, name));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;type = cells.item(row+1, 1).value().variantType();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;while (type != COMVariantType::VT_EMPTY);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;application.quit();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;a href="mailto:'@');cell"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6815888739577245774?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6815888739577245774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6815888739577245774' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6815888739577245774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6815888739577245774'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/03/dynamics-ax-code-to-readwrite-data-to.html' title='Dynamics AX -  code to Read/Write data to excel'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4179791865928198465</id><published>2011-02-28T14:23:00.002+05:00</published><updated>2011-02-28T14:23:45.212+05:00</updated><title type='text'>Inventory Costing in AX 2009</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here is a good article related to the inventory costing:&lt;br /&gt;&lt;a href="https://community.dynamics.com/product/ax/axtechnical/b/axinthefield/archive/2011/02/02/inventory-costing-in-ax-2009.aspx"&gt;https://community.dynamics.com/product/ax/axtechnical/b/axinthefield/archive/2011/02/02/inventory-costing-in-ax-2009.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4179791865928198465?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4179791865928198465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4179791865928198465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4179791865928198465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4179791865928198465'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/02/inventory-costing-in-ax-2009.html' title='Inventory Costing in AX 2009'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3523200214580525759</id><published>2011-02-27T23:36:00.002+05:00</published><updated>2011-02-27T23:36:10.697+05:00</updated><title type='text'>Get ready for DAX 2012</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3523200214580525759?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3523200214580525759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3523200214580525759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3523200214580525759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3523200214580525759'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/02/get-ready-for-dax-2012.html' title='Get ready for DAX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5862097415746957654</id><published>2011-02-27T23:30:00.001+05:00</published><updated>2011-02-27T23:30:26.723+05:00</updated><title type='text'>Readability issue on customer/vendor aging report</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Most of the time people ask me one common problem they face on customer/vendor aging report. It’s very annoying for them to view Invoice/Voucher field on this report. MS ship this field as single field instead of separating Invoice and Voucher two fields. However we can enhance the readability of this column by modifying the CustVendBalanceList class. The Invoice/Voucher field is setup in the addTrans() method (line#34), here is the actual piece of code:&lt;br /&gt;&lt;br /&gt;tmpAccountSum.Txt = strfmt(&lt;span style="color: red;"&gt;'%1/%2'&lt;/span&gt;, _voucher, _invoice);&lt;br /&gt;&lt;br /&gt;We can put some blank spaces b/w &lt;span style="color: red;"&gt;%1 / %2&lt;/span&gt; to increase the visibility of the records on this report. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5862097415746957654?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5862097415746957654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5862097415746957654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5862097415746957654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5862097415746957654'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/02/readability-issue-on-customervendor.html' title='Readability issue on customer/vendor aging report'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4553831109297946292</id><published>2011-02-27T23:18:00.001+05:00</published><updated>2011-02-27T23:19:44.318+05:00</updated><title type='text'>Lookup Department Dimension on dialog</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"&gt;Few days back, I received a requirement to show the Department dimension on the report dialog, there are couple of ways to achieve this functionality, but in my opinion, the easiest way to create a new EDT called DepartmentDimension and make a relations to DepartmentDimension == Dimension.num. And 0 == Dinemsions.DimensionCode; where 0 is the dimension you want to use. Finally add following code in the dialog() method of the class:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;dialog.addFieldValue(typeid(DepartmentDimension ) ,departmentDimensionVariable ,"Label - if required","help text - if required");&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4553831109297946292?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4553831109297946292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4553831109297946292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4553831109297946292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4553831109297946292'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/02/lookup-department-dimension-on-dialog.html' title='Lookup Department Dimension on dialog'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6938979490842350900</id><published>2011-02-01T11:28:00.000+05:00</published><updated>2011-02-01T11:28:35.383+05:00</updated><title type='text'>My blog is now on Microsoft Dynamics AX Community</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I am glad to&amp;nbsp;inform&amp;nbsp;you guys that my blog is on on &lt;a href="https://community.dynamics.com/product/ax/default.aspx"&gt;Microsoft Dynamics AX Community&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://community.dynamics.com/product/ax/axtechnical/b/mafsarkhan/default.aspx"&gt;https://community.dynamics.com/product/ax/axtechnical/b/mafsarkhan/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HaPpY DAXing !!!!!!!!!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6938979490842350900?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6938979490842350900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6938979490842350900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6938979490842350900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6938979490842350900'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/02/my-blog-is-now-on-microsoft-dynamics-ax.html' title='My blog is now on Microsoft Dynamics AX Community'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5882536039900304206</id><published>2011-01-30T01:01:00.000+05:00</published><updated>2011-01-30T01:01:13.192+05:00</updated><title type='text'>Restoring AX Database From One Environment to Another</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;When you restore a database from a production environment to a test / dev environment, you should run these scripts to ensure that your database is synchronized with the Application environment and proper object server.&lt;br /&gt;Here are some samples scripts you should run:&lt;br /&gt;Select * from BatchServerGroup&lt;br /&gt;–Update BatchServerGroup set SERVERID = ’01@NewAOS’ where SERVERID = ’02@OldAOS’&lt;br /&gt;Select * from BATCHSERVERCONFIG&lt;br /&gt;–Update BATCHSERVERCONFIG set SERVERID = ’01@NewAOS’ where SERVERID = ’02@OldAOS’&lt;br /&gt;Select * from SYSCLUSTERCONFIG&lt;br /&gt;select * from SYSSERVERCONFIG&lt;br /&gt;–Update SYSSERVERCONFIG set SERVERID = ’01@NewAOS’ where SERVERID = ’02@OldAOS’&lt;br /&gt;Select * from SYSSERVERSESSIONS&lt;br /&gt;–Update SYSSERVERSESSIONS Set AOSID = ’01@NewAOS’, Instance_Name = ’01′ where AOSID = ’02@OldAOS’&lt;br /&gt;Select * from Batch&lt;br /&gt;–Update BATCH set SERVERID = ’01@NewAOS’ where SERVERID = ’02@OldAOS’&lt;br /&gt;select * from SYSCLIENTSESSIONS&lt;br /&gt;–delete SYSCLIENTSESSIONS&lt;br /&gt;Beside these, you should also check the Dynamics database for Enterprise Portal, Analytical Server BI setup and reporting server configuration. This could be done through SQL Server access or trough AX Administration setup.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5882536039900304206?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5882536039900304206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5882536039900304206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5882536039900304206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5882536039900304206'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/restoring-ax-database-from-one.html' title='Restoring AX Database From One Environment to Another'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5409971969474491546</id><published>2011-01-30T00:59:00.001+05:00</published><updated>2011-01-30T00:59:49.116+05:00</updated><title type='text'>Backup and restore Dynamics AX application files - made easy</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; font-size: 12px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;Here is sample code which can be used to automatically copy Dynamics AX application files to an archive. This step is really important if you want to ensure that you safely backup your Application files.&lt;br /&gt;To restore your application, you should copy the application files from the backup to the proper application directory and then start service and compile all objects in the application.&lt;br /&gt;This is the sample batch file which you can run using Task scheduler or any other similar program.&lt;br /&gt;@echo on&lt;br /&gt;for /f “tokens=1,2,3,4* delims=.:/- ” %%i in (‘date /t’) do (&lt;br /&gt;for /f “skip=1 tokens=1-4 delims=/-,().” %%x in (‘echo.^|date’) do (&lt;br /&gt;set weekday=%%i&amp;amp;set month=%%j&amp;amp;set day=%%k&amp;amp;set year=%%l))&lt;br /&gt;REM stop aos service&lt;br /&gt;net stop “Dynamics AX Object Server 5.0$01-XXXXX”&lt;br /&gt;REM maps to folder where backups are stored&lt;br /&gt;net use z: /d /y&lt;br /&gt;net use z: \\Backup&lt;br /&gt;REM creates folder with day and time stamp&lt;br /&gt;z:&lt;br /&gt;cd \&lt;br /&gt;mkdir %weekday%%month%%day%%year%&lt;br /&gt;REM copies app folder to the backup location&lt;br /&gt;XCOPY “c:\Program Files\Microsoft Dynamics AX\50\Application\Appl*.*” z:\%weekday%%month%%day%%year%\app\ /K /O /Y /F /I /E&lt;br /&gt;REM start aos service&lt;br /&gt;net start “Dynamics AX Object Server 5.0$01-XXXXXX”&lt;br /&gt;You should replace the “Dynamics AX Object Server 5.0$01-XXXXX” with your service name.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5409971969474491546?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5409971969474491546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5409971969474491546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5409971969474491546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5409971969474491546'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/backup-and-restore-dynamics-ax.html' title='Backup and restore Dynamics AX application files - made easy'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7384552060089103943</id><published>2011-01-19T14:24:00.001+05:00</published><updated>2011-01-19T14:26:23.209+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>MS Dynamics AX 6.0 is officially renamed to MS Dynamics AX 2012</title><content type='html'>MS Dynamics AX 6.0 is officially renamed to MS Dynamics AX 2012. &lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/ukax/archive/2011/01/18/microsoft-dynamics-ax-2012-unveiled.aspx"&gt;Microsoft Dynamics AX 2012 unveiled&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7384552060089103943?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7384552060089103943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7384552060089103943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7384552060089103943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7384552060089103943'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/ms-dynamics-ax-60-is-officially-renamed.html' title='MS Dynamics AX 6.0 is officially renamed to MS Dynamics AX 2012'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2804349617638467613</id><published>2011-01-11T18:02:00.001+05:00</published><updated>2011-06-09T15:01:21.875+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamics AX 2012'/><title type='text'>Official Details about Dynamics AX '6' released</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;2Here we are, kicking off 2011 with a bang for Microsoft Dynamics AX! Next week in the Microsoft Dynamics AX 2011 Technical Conference, in which the primary focus in on Microsoft Dynamics AX '6'. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To kick things off, Microsoft today did a press release, in which official details about the Microsoft Dynamics AX '6' product was released. A direct link to the Press Release can be found here.: &lt;a href="http://www.microsoft.com/Presspass/press/2011/jan11/1-10MSFTDynamicsAX6PR.mspx"&gt;Microsoft Previews Next-Generation ERP &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This press release was well covered by both MSDynamicsWorld.com, here: &lt;a href="http://msdynamicsworld.com/story/legal/microsoft-confirms-details-upcoming-dynamics-ax-6-version"&gt;Microsoft Confirms Details of Upcoming Dynamics AX "6" Version&lt;/a&gt;, as well as MaryJo Over at ZDNet, on her 'All About Microsoft' blog, found here.: &lt;a href="http://www.zdnet.com/blog/microsoft/2011-to-be-a-big-year-for-microsoft-in-erp/8396?tag=content;selector-blogs"&gt;2011 to be a big year for Microsoft in ERP&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2804349617638467613?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2804349617638467613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2804349617638467613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2804349617638467613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2804349617638467613'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/official-details-about-dynamics-ax-6.html' title='Official Details about Dynamics AX &apos;6&apos; released'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4414530990522514556</id><published>2011-01-04T15:45:00.000+05:00</published><updated>2011-01-04T15:45:08.933+05:00</updated><title type='text'>Secrets of SysLastValue</title><content type='html'>SysLastValue is a kernel-level table that does not show up in the AOT data dictionary. There is however a form called "Usage Data" that can be accessed (check tools / development tools / application objects / usage data). The form itself is called "SysLastValue" (yeah, really) in the AOT. We can use the datasource on the form to right/click and table browse this mysterious table.&lt;br /&gt;&lt;br /&gt;SysLastValue stores many different things. The majority of records you will find in there pertain to caching, or "last use" type of data, which will remember the last values you've entered on a dialog, the last printer selection you made for a report, etc. But, which is why we're interested, it will also store any user setup you make on a form, and any and all queries being stored. The field "recordtype" will indicate exactly the type of values stored.&lt;br /&gt;&lt;br /&gt;We are interested in type "UserSetup" with the "isKernel" flag set to no, these are the user setups on forms, and the "elementName" field will tell you what form name.&lt;br /&gt;Type "UserSetupQuery" contains the queries saved for a form. You will notice the "designname" contains the form's name, and the "elementname" field contains "f:formname".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4414530990522514556?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4414530990522514556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4414530990522514556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4414530990522514556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4414530990522514556'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/secrets-of-syslastvalue.html' title='Secrets of SysLastValue'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3975822615109494449</id><published>2011-01-04T15:43:00.000+05:00</published><updated>2011-01-04T15:43:44.018+05:00</updated><title type='text'>Happy new year 2011 - the year of MS Dynamics AX 2011 ERP</title><content type='html'>Happy new year.&lt;br /&gt;&lt;br /&gt;Bye bye AX 2009, now its a time for AX 2011/AX 6.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3975822615109494449?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3975822615109494449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3975822615109494449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3975822615109494449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3975822615109494449'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2011/01/happy-new-year-2011-year-of-ms-dynamics.html' title='Happy new year 2011 - the year of MS Dynamics AX 2011 ERP'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2785228393720311817</id><published>2010-12-22T19:45:00.000+05:00</published><updated>2010-12-22T19:45:15.034+05:00</updated><title type='text'>Cleanup cache .auc file</title><content type='html'>If you wants to delete the local cache, do following steps:&lt;br /&gt;&lt;br /&gt;1. Stop AOS.&lt;br /&gt;2. Delete the .auc file from users\&lt;user name=""&gt;\Appdata\ folder&lt;br /&gt;3. Restart AOS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2785228393720311817?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2785228393720311817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2785228393720311817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2785228393720311817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2785228393720311817'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/12/cleanup-cache-auc-file.html' title='Cleanup cache .auc file'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1397858378539112004</id><published>2010-12-22T14:01:00.001+05:00</published><updated>2011-05-30T16:02:07.419+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>Run SalesConfirmation report through code</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here is an example to print the sales confirmation report through code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;static void printSalesConfirmationReport(Args _args)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Args args;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReportRun reportRun;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesFormLetter salesFormLetter;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintJobSettings printJobSettings;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustConfirmJour custConfirmJour;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RecordSortedList list = new RecordSortedList(55);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesTable salesTableUpdate;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT firstonly custConfirmJour order by ConfirmID desc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where custConfirmJour.SalesId ==&amp;nbsp;&amp;nbsp; salesTable.SalesId ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.ins(custConfirmJour);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args = new Args(ReportStr(SalesConfirm));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printJobSettings = new PrintJobSettings();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printJobSettings.SetTarget(PrintMedium::Screen);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printJobSettings.suppressScalingMessage(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; salesFormLetter = new SalesFormLetter_Confirm(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.designName("Standard");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.caller(salesFormletter);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.parmEnum(PrintCopyOriginal::Original);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.parmEnumType(enumnum(PrintCopyOriginal));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.object(list);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportRun = new ReportRun(args);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportRun.setTarget(PrintMedium::Screen);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportRun.init();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reportRun.run();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1397858378539112004?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1397858378539112004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1397858378539112004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1397858378539112004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1397858378539112004'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/12/run-salesconfirmation-report-through.html' title='Run SalesConfirmation report through code'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7960927128972135297</id><published>2010-12-08T15:52:00.004+05:00</published><updated>2010-12-08T16:02:06.206+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>Dynamics AX Business Intelligence</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;There is a new blog from Microsoft, focusing specifically on Dynamics AX BI. The blog can be found here.: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/dynamicsaxbi/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Dynamics AX Business Intelligence&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;AX SSRS Reporting Concepts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=8dQomypSAgQ"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;ScreenCast - AX SSRS Reporting Concepts on YouTube&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7960927128972135297?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7960927128972135297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7960927128972135297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7960927128972135297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7960927128972135297'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/12/dynamics-ax-business-intelligence.html' title='Dynamics AX Business Intelligence'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6882669951173026848</id><published>2010-12-08T00:15:00.001+05:00</published><updated>2010-12-08T00:16:57.329+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delete actions'/><title type='text'>Dilemma of delete actions-  Restricted/Casecade+Restricted</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;To explain the difference b/w Restricted and Cascade+Restricted delete action, consider the following example:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Let's say you have tables CarTable and RentalTable, there is a one-to-many relationship between CarTable and RentalTable. Then if a record in CarTable is deleted and the delete action is:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: red;"&gt;None&lt;/span&gt;&lt;span style="color: red;"&gt;:&lt;/span&gt; No action on related records in RentalTable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: red;"&gt;Cascade:&lt;/span&gt; All records in RentalTable related to the record being deleted in CarTable will also be deleted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: red;"&gt;Restricted:&lt;/span&gt; The user will get a warning saying that the record in the CarTable cannot be deleted because transactions exist in table RentalTable. The user will be unable to delete the record in CarTable if one or more related records exist in the RentalTable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: red;"&gt;Cascade + Restricted:&lt;/span&gt; This option is used when deleting records through more than two levels. Let's say another table existed that had a cascade delete action against CarTable and the CarTable had a Cascade + Restricted delete action against RentalTable. If the record in the top level table was about to be deleted it would also delete the related records in CarTable. In turn, all the records in RentalTable related to the records being deleted from CarTable would also be deleted (Cascade behaviour). If only a record in CarTable was about to be deleted, the user would get the same message when using the Restricted method (Restricted behaviour).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6882669951173026848?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6882669951173026848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6882669951173026848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6882669951173026848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6882669951173026848'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/12/dilemma-of-delete-actions.html' title='Dilemma of delete actions-  Restricted/Casecade+Restricted'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6458692968984977826</id><published>2010-11-25T15:49:00.001+05:00</published><updated>2010-11-25T15:52:26.597+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>Update changes to Production/live environment</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;Most companies have 3 different Dynamics AX environments:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;- Development environment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;- Test/Acceptation environment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;- Production/live environment.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;When a customer wants to have changes to their production/live environment, the describe some kind of document with requirements. A developer will implement the requirements in their Development environment. When he is finished someone has to copy the changes to the test/acceptation environment. The customer will test the changes and when he accepts them, the changes have to be copied to the production environment. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This coping of changed code can be done in 2 ways:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;- Xpo file (with label files).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;- A var layer files (with label files).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Copy the delivered Xpo or layer and label files to your delivery archive directory. (Note use &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;the delivery date in the folder name).&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Create in the archive directory a directory backup.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Stop all batch servers.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Stop all AOS.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Remove all cache files (del/s *.aoc).&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Create a database backup and copy this to the archive backup directory.(point 2)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Copy the axVar.aod, axCus.aod and axUsr.aod from your test environment to the archive backup directory and to the “old” directory in your application tree. (So you can do layer compare afterwards).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Copy the label files into your application tree.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start an AOS with a different name and/or Port number. This new AOS should only be used for administration purpose. The reason for this dedicated AOS is that upgrading AX can conflict to the stability of your environment. The end user can experience the next thing:&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: Verdana, sans-serif;"&gt;a.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;a.&amp;nbsp;Stack traces on the screen. &lt;br /&gt;b. Missing labels.&lt;br /&gt;c. Lost or corrupted data.&lt;br /&gt;d. An occupied phone line of the Dynamics AX administrator, because&amp;nbsp; everyone is phoning him that he or she can’t do her work. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Import the Xpo file and press the recompile button if errors occur. If the error a stays repeat this step one more time.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Administrator/Periodic/SQL Administrator use check/synchronize to update the data model. Run it a second time in diagnostic mode only, to be sure it was ok.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Administrator/Periodic/Compile application. (Compiling from the AOT will not work when no developers license is used)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Stop the administration AOS.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start live/production AOS.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start all Axapta batch servers.&lt;/span&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6458692968984977826?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6458692968984977826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6458692968984977826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6458692968984977826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6458692968984977826'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/11/update-changes-to-productionlive.html' title='Update changes to Production/live environment'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8081918061151440316</id><published>2010-11-24T20:13:00.000+05:00</published><updated>2010-11-24T20:13:45.058+05:00</updated><title type='text'>Using while select firstonly to avoid validations in Dynamics Ax</title><content type='html'>&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small &amp;quot;Times New Roman&amp;quot;; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, &amp;quot;BitStream vera Sans&amp;quot;, Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;When you execute a select statement to retrieve a single record most of us right the query first. This is followed by a validation to ensure that the query has returned a record. we make it simpler If we right it the way mentioned below&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small &amp;quot;Times New Roman&amp;quot;; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, &amp;quot;BitStream vera Sans&amp;quot;, Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;/span&gt;&lt;/span&gt;static void WhileSelectInsteadoFSelect(Args _args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustTable custTable;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-----General way---------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // fetch the record first&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select firstonly forupdate custTable;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add an additional validation&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (custTable.RecId)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custTable.Memo = 'updated value';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custTable.update();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//------Alternate--------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //prevents the extra 'if' check&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while select firstonly forupdate custTable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custTable.Memo = 'updated value';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custTable.update();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //can also be used for simple readonly&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while select firstonly custTable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info(custTable.Memo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8081918061151440316?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8081918061151440316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8081918061151440316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8081918061151440316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8081918061151440316'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/11/using-while-select-firstonly-to-avoid.html' title='Using while select firstonly to avoid validations in Dynamics Ax'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2046563639585012116</id><published>2010-11-21T01:04:00.000+05:00</published><updated>2010-11-21T01:04:04.846+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intelligent Data Management Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='IDM'/><title type='text'>Intelligent Data Management Framework For Microsoft Dynamics AX</title><content type='html'>From the IDMF page.: &lt;br /&gt;&lt;br /&gt;"The Intelligent Data Management Framework for Microsoft Dynamics® AX helps administrators optimize Dynamics AX database layout by providing functionality to manage key database layout techniques, by way of intuitive Archiving and Purging capabilities. &lt;br /&gt;&lt;br /&gt;The framework provides the platform for reduction in database size by purging and archiving of transactions records from sets of relating entities, while maintaining the consistency and integrity of production data. The Intelligent Data Management Framework provides customers and partners the ability to identify and discover related entities based on the Microsoft Dynamics AX metadata and to determine the purging or archiving criteria for tables. &lt;br /&gt;&lt;br /&gt;The Intelligent Data Management Framework also analyzes the Production database to determine usage patterns and assesses the health of the Microsoft Dynamics AX Application. This Framework is compatible with all supported versions of Dynamics AX. The Intelligent Datat Management Framework for Microsoft Dynamics AX is a benefit of staying enrolled in a Business Ready Enhancement plan."&lt;br /&gt;&lt;br /&gt;The following is a direct link to a presentation put on by Tao Wang Principal Development Manager Dynamics AX performance, at the AXUG Summit this year: &lt;a href="http://www.axug.com/summit-2010/agenda/tec01---the-new-intelligence-data-management-idm-tool.pptx"&gt;TEC01 - The New Intelligence Data Management (IDM) Tool&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2046563639585012116?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2046563639585012116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2046563639585012116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2046563639585012116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2046563639585012116'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/11/intelligent-data-management-framework.html' title='Intelligent Data Management Framework For Microsoft Dynamics AX'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1195961691701760407</id><published>2010-10-28T17:08:00.000+05:00</published><updated>2010-10-28T17:08:17.703+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Query'/><title type='text'>Query - A general approach</title><content type='html'>&lt;span style="color: #6fa8dc; font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;strong&gt;Query:&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Query can be seen as a class interface for creating select statements. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;span style="background-color: white; color: red;"&gt;Use a query in place of a select statement when the structure of the "select" (query) is not known until run time, or when the user should be able to specify the ranges.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;In other situations, use a select statement. Select statements are often easier to read, and they are much more compile-time stable. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Queries are embedded in Forms, Reports and RunBase jobs and should always be used with these application objects, unless there are good reasons not to. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Queries are very flexible. Everything can be specified at run time, but specify as much as possible before run time.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Create queries in the Application Object Tree (AOT) where possible, instead of building them in code. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Use intrinsic functions everywhere possible to enable compile-time checking of code. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;The range of a query can be specified under program control by using two different techniques, the normal one and the query range value expression. Both take a string as an argument that is not evaluated until run time. The string must fulfill certain syntax restrictions and be as compile-time stable as possible. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6fa8dc; font-family: Georgia;"&gt;&lt;strong&gt;Query Range value:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Always use the SysQuery::value method when you are programmatically assigning an atomic value to a query range. &lt;/span&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Always use the SysQuery::range method when you are programmatically assigning a value range to a query range. The range method will supply the needed ".." operators. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Always use the SysQuery::valueEmptyString method when you want to have a range which must have a blank value. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Always use the SysQuery::valueUnlimited method when you want to have a completely open range. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="LW_CollapsibleArea_Title"&gt;&lt;strong&gt;&lt;span style="color: #6fa8dc;"&gt;Query Range value Expression:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="LW_CollapsibleArea_Title"&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Only use the query range value expressions if the normal query range values cannot be used. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Be aware that query range value expressions are evaluated only at run time (so they are not checked at compile time). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Because the contents of the Query range value expressions should look like X++, you should be careful to format the different data types correctly. Use the strFmt system function or queryValue/queryRange for this. queryValue and queryRange are methods on the Global class. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Place the expression in a range that is defined on the most relevant of the involved fields. &lt;/span&gt;&lt;span style="font-family: Georgia, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1195961691701760407?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1195961691701760407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1195961691701760407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1195961691701760407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1195961691701760407'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/10/query-general-approach.html' title='Query - A general approach'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-675349013821678001</id><published>2010-10-26T12:13:00.003+05:00</published><updated>2010-10-26T15:52:14.366+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>How to put Ax 2009 machine back to a clean state (remove the usr layer)</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;1. Stop the AOS (default service name is AOS50$01 for AX5).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2. Delete the user layer aod file (…\Microsoft Dynamics AX\50\Application\Appl\AXDB_App\axusr.aod) and *.aoi files.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3. Delete the metadata file in client %userprofile%\AppData\*.auc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;4. Start the AOS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;5. Run AX client and do a synchronize on the Data Dictionary node on the AOT tree.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-675349013821678001?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/675349013821678001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=675349013821678001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/675349013821678001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/675349013821678001'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/10/how-to-put-ax-2009-machine-back-to.html' title='How to put Ax 2009 machine back to a clean state (remove the usr layer)'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8744139320273189674</id><published>2010-09-15T18:54:00.001+05:00</published><updated>2010-10-25T18:43:09.812+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AOS'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>Axapta AOS cluster</title><content type='html'>&lt;strong&gt;Setting up the Axapta Cluster environment&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The Axapta Object Server environment offers a load balancing feature - called the Axapta Object Server Cluster. A number of object servers can be assigned to the same Axapta Object Server Cluster. A client is configured to connect to a Cluster. It will then choose the server with the lowest number of on-line users. With this approach the Axapta Object Server Environment can also be made fault tolerant. If an Object Server fails, a client can immediately connect to one of the other servers in the same cluster.&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Axapta object server cluster&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The Axapta Object Server cluster environment is build to provide load balancing and fall back. An Axapta Object Server can be specified to belong to a specific cluster. If the same cluster name is given for a number of object servers they all belong to the same cluster. A user can be specified to connect to a given cluster. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Suppose a number of servers are set up in the same cluster - named AOSC. They should all use the same application and database, and in other aspects have the same settings. All clients connecting to the AOSC should be specified to search for servers belonging to this cluster; otherwise the load balancing mechanism will not work properly. A client starting up against an Axapta Object Server Cluster will start out by broadcasting an UDP package requesting Axapta Object Servers fulfilling names and IP server masks given in the client settings to respond. It is therefore vital that firewalls allow such packages to pass through. The client will receive answers from all Object Servers with information on object server name and the name of the instance plus the number of clients connected to that instance. The client disregards information from servers not belonging to the requested cluster. The client then chooses one of the instances with the lowest number of clients. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Since a client automatically can choose from all servers in a cluster one or more Object Servers can be down without changing the connection procedures. However performance might suffer severely due to higher load on the fewer servers. &lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Setting up the server&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;On the server manager select the server of interest and click settings. In the advanced field write -cluster=&lt;my cluster="" name=""&gt;. The cluster name can be up to 10 characters long. &lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Setting up the client&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In the configuration tool choose the configuration of interest. In the advanced field write -cluster=&lt;my cluster="" name=""&gt;. The client setting for connecting to an object server depends on two situations. The first situation being both client and Axapta Object Servers being in the same subnet. The second being client and Axapta Object Servers belong to different subnets. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;Recall the settings in the configuration utility for connecting to an object server:&lt;br /&gt;&lt;br /&gt;* Axapta Object Server Mask&lt;br /&gt;* Axapta Object Server host names&lt;br /&gt;* Axapta Object Server IP Address masks&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;When the client and Object Servers belong to the same subnet the above three masks can be left blank. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When the client and Object Servers belong to different subnets the IP Address masks should contain the mask for the subnet the Object Servers belong to. An example could be 192.88.253.255, where the last 255 specifies that the search is done among servers in the subnet 192.88.253.*.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Note:&lt;/b&gt; If client at any time receives only service response from Object Servers within the same cluster it will automatically choose the least loaded of these servers without having to specify the cluster name in the&lt;/div&gt;&lt;div style="text-align: justify;"&gt;client configuration. This means that if your installation is one single Axapta cluster, there is no need to change the existing configuration with respect to cluster name. Just ensure that all relevant Object Servers are&lt;/div&gt;&lt;div style="text-align: justify;"&gt;located by client configurations network setup.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8744139320273189674?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8744139320273189674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8744139320273189674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8744139320273189674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8744139320273189674'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/09/axapta-aos-cluster.html' title='Axapta AOS cluster'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7798910046779054153</id><published>2010-08-05T16:31:00.001+05:00</published><updated>2010-10-25T18:33:52.035+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimension'/><category scheme='http://www.blogger.com/atom/ns#' term='Inventory'/><title type='text'>Creating New Inventory Dimension - Storage</title><content type='html'>AX has 8 standard inventory dimension here is the classification of these 8 dimensions&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Inventory Item Dimensions&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Size&lt;/li&gt;&lt;li&gt;Colour&lt;/li&gt;&lt;li&gt;Configuration&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;Inventory Storage Dimensions&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Batch&lt;/li&gt;&lt;li&gt;Serial&lt;/li&gt;&lt;li&gt;Warehouse&lt;/li&gt;&lt;li&gt;Location&lt;/li&gt;&lt;li&gt;Pallet&lt;/li&gt;&lt;/ol&gt;Below is the list of objects that needs to be created or modified while creating a new inventory storage dimension. Please note that the list is not exhaustive enough but contains most of the objects that needs to be modified. Let us assume the name of the new dimension would be 'Test'&lt;br /&gt;xtended Data Types&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Following is the table specifying the EDTs that one may need to create for new storage dimension. Reference EDT section specifies which EDT to look at while creating new EDT.&lt;br /&gt;&lt;br /&gt;EDT Name = InventTestId&lt;br /&gt;Label = Test&lt;br /&gt;Extends = SysGroup&lt;br /&gt;Type = String&lt;br /&gt;Reference EDT = InventLocationId&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Tables&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;New table &lt;em&gt;'InventTest'&lt;/em&gt; : Look at the table &lt;em&gt;InventLocation&lt;/em&gt; for reference and create a new table &lt;em&gt;InventTest&lt;/em&gt;. Do not forget to create the field groups, indexes, properties similar to InventLocation. You can duplicate this table and change the required fields, methods, fields groups, indexes, propeties etc.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventParameters :&lt;/strong&gt; A new method 'numRefInventTestId' needs to be created. Take method 'numRefInventSerialId' for an example while creating this method.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventDim :&lt;/strong&gt; You will have to create a new field 'InventTestId'. Add this field to field groups, 'AutoReport', 'InventoryDimensions'. Create a new index 'TestIdx' with this field, Add this field InvenyTesId to index 'DimIdx'. Modify the following methods, take cue from code for other dimensions and add the relevant code. Methods are: 'dim2dimParm', 'dimParm2dim', 'emptyDimField', 'findDim', 'findOrCreate', 'formQueryAddDynaLink', 'isFieldIdItemDim', 'isFieldIdTransferReceiptMergable', 'isFieldIdTransferTransitReceiptMergable'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventDimParm :&lt;/strong&gt; Add a new field 'InventTestIdFlag'. Add this field to following field groups: 'AutoReport', 'Fixedview', 'View'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventSum :&lt;/strong&gt; Add a new method named 'inventTestId'. Take cues from 'inventSerialId' method in the table.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventSumDateTrans :&lt;/strong&gt; You will have to create a new field 'InventTestId'. Add this field to field groups, 'AutoReport', 'InventoryDimension'. Modify following methods: 'initFromInventDim', 'inventDim'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InventSumDeltaDim :&lt;/strong&gt; You will have to create two new fields named 'InventTestId', 'InventTestIdFlag'. Add the 'InventTestId' field to following groups : 'AutoLookup', 'InventDim'. Add 'InventTestIdFlag' field to following groups: 'InventDimFlags'. Modify following methods: 'initFromInventDim', 'initFromInventDimParm', 'initInventDim', 'initInventDimParm'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table InterCompanyInventDim :&lt;/strong&gt; You will have to create a new field 'InventTestId'. Add this field to field groups: 'AutoReport', 'InventoryDimensions', 'TmpInventDimensions'. Add the field to following indexes: 'DimIdx'. Modify following methods: 'fromInventDim', 'toInventDim', 'dim2dimParm', 'dimParm2dim', 'formQueryAddLink'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Table PBATreeInventDim :&lt;/strong&gt; You will have to create two new fields named 'InventTestId', 'InventTestIdVar'. Add the 'InventTestId' field to following groups : 'AutoReport', 'AllFields', 'InventoryDimensions'. Add 'InventTestIdVar' field to following field group: 'InventoryDimensions'. Add a new method named 'inventTestId'. Take cues from 'inventSerialId' method in the table. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Macros&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Following is the list of macros that may need to be modified&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;ol&gt;&lt;li&gt;InventDimSelect&amp;nbsp;&lt;/li&gt;&lt;li&gt;InventDimJoin&amp;nbsp;&lt;/li&gt;&lt;li&gt;InventDimGroupAllFields&amp;nbsp;&lt;/li&gt;&lt;li&gt;InventDimExistsJoin&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;strong&gt;Classes&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;strong&gt;New class AxInventTest :&lt;/strong&gt; Run the class AxGenerateAxBC and select the table InventTest. This will create new AxBC class for InventTest table and you will have to resolve some errors.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class NumberSeqReference_Inventory :&lt;/strong&gt; The method 'loadModule' has to be modified to create a reference for 'Test'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class InventDimRenameValue :&lt;/strong&gt; Add a method 'newInventTest'. Take cue from method 'newInventSerial' for definition of this new method.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class InventDimTracking :&lt;/strong&gt; Modify method 'initFromArgs'. Take an example of any of the inventory dimensions for changes.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class AxInventDim :&lt;/strong&gt; Add parm and set methods for InventTestId field. Take example of parmInventSerialId and setInventSerialId. Modify method setTableFields to make a call to setInventTestId method.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;AxInventDim_PriceDiscTable :&lt;/strong&gt; Add method setInventTestId. Take example of setInventSerialId for definition of this method.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class InventDimFixedClass :&lt;/strong&gt; Add following methods : 'parmInventTestIdFlag' - Take example from parmInventSerialIdFlag method and 'inventTestIdFlag' - Take example from inventSerialId flag method. Create a macro for InventTestId in ClassDeclaration (look at declarations for other dimensions). Modify method 'fieldId2Idx'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class TradeInterCompany :&lt;/strong&gt; Modify method 'createTmpInventSum'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;Class PBALib :&lt;/strong&gt; Modify method 'createInventDim'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Apart from these classes there are many more classes that may need modifications like InventMovement, InventUpd and its child classes. InventOnhand and related classes etc. If you want to know more you can search for keyword 'InventSerial' in the classes node and find out.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;strong&gt;Forms&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;Following new forms need to be created&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;InventTest :&lt;/strong&gt; Similar to InventSerial.&lt;br /&gt;&lt;strong&gt;InvenTestIdLookup :&lt;/strong&gt; Similar to InventSerialIdLookup&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7798910046779054153?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7798910046779054153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7798910046779054153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7798910046779054153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7798910046779054153'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/08/creating-new-inventory-dimension.html' title='Creating New Inventory Dimension - Storage'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-611530057110985101</id><published>2010-07-06T18:15:00.001+05:00</published><updated>2010-10-25T18:43:48.551+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LedgerVoucher'/><category scheme='http://www.blogger.com/atom/ns#' term='ledger journal'/><title type='text'>Check Journal Balance - When you meet a problem of "do not balance", this break point will be very helpful.</title><content type='html'>&lt;span style="color: red;"&gt;&lt;strong&gt;Object:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\Classes\LedgerVoucherObject\updateTotals&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Invoke Scenario:&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;When there is some problem about imbalance, this function will be very helpful to track why it is imbalance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Operation Instance:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;General ledger -&amp;gt; Journals -&amp;gt; General journal -&amp;gt; Create a new line -&amp;gt; Click Line -&amp;gt; add lines for journal -&amp;gt; Click button post -&amp;gt; post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Explanation of codes:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;private void updateTotals(LedgerTrans _ledgerTrans)&lt;br /&gt;{&lt;br /&gt;LedgerTrans ledgerTransTotals;&lt;br /&gt;;&lt;br /&gt;ledgerTransTotals.data(_ledgerTrans);&lt;br /&gt;if (transDateTotals.find(ledgerTransTotals)) //line 13&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;ledgerTransTotals.AmountCur += _ledgerTrans.AmountCur;&lt;br /&gt;ledgerTransTotals.AmountMST += _ledgerTrans.AmountMST; //line 16&lt;br /&gt;ledgerTransTotals.AmountMSTSecond += _ledgerTrans.AmountMSTSecond;&lt;br /&gt;ledgerTransTotals.Qty += _ledgerTrans.Qty;&lt;br /&gt;transDateTotals.ins(ledgerTransTotals, true);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;else //line 21&lt;br /&gt;{&lt;br /&gt;transDateTotals.ins(ledgerTransTotals);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;“ledgerTransTotals” is used to accumulate all the transactions. If the transaction is the first transaction needs to be checked, it goes into line 13. Otherwise, it goes into line 21. The ledgerTransTotals.AmountMST at line 16 should be 0 when the last transaction has been added, or it will not be posted. And you will receive a infolog “The trasaction on voucher *** do not balance”&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-611530057110985101?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/611530057110985101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=611530057110985101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/611530057110985101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/611530057110985101'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/07/check-journal-balance-when-you-meet.html' title='Check Journal Balance - When you meet a problem of &quot;do not balance&quot;, this break point will be very helpful.'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-309823601609784715</id><published>2010-07-06T18:08:00.001+05:00</published><updated>2010-07-06T18:12:21.988+05:00</updated><title type='text'>Post Journal - Illustrate the structure of LedgerJournalcheckPost\postJournal. It is called by most journals.</title><content type='html'>&lt;span style="color: red;"&gt;&lt;strong&gt;Object:&lt;/strong&gt;&lt;/span&gt;&amp;nbsp; Classes\LedgerJournalCheckPost\postJournal&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Invoke Scenario:&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Most of the journals (including “General ledger”, “Payment journal”, “Invoice journal”, “Invoice register”, “Invoice approval journal”, etc.) will call this method to deal with the posting staff. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Operation Instance:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;General ledger -&amp;gt; Journals -&amp;gt; General journal -&amp;gt; Create a new line -&amp;gt; Click Line -&amp;gt; add lines for journal -&amp;gt; Click button post -&amp;gt; post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Explanation of codes:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;while select ledgerJournalTrans order by Voucher, AccountType, RecId //line 99&lt;br /&gt;&lt;br /&gt;where ledgerJournalTrans.JournalNum == ledgerJournalTable.JournalNum&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;while (ledgerJournalTrans.AccountNum &lt;br /&gt;&lt;br /&gt;ledgerJournalTrans.AmountCurDebit &lt;br /&gt;&lt;br /&gt;// line 316&lt;br /&gt;ledgerJournalTrans.AmountCurCredite&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (!this.postTrans(……))&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;ledgerJournalTrans = this.ledgerJournalTransOffset(ledgerJournalTrans, // line357&lt;br /&gt;&lt;br /&gt;swappedAcToPostTaxedFirst);&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;……&lt;br /&gt;&lt;br /&gt;if (interCompanyCompanies.elements() &amp;gt; 0) //line 400&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;interCompanyCompaniesEnumerator = interCompanyCompanies.getEnumerator();&lt;br /&gt;&lt;br /&gt;while (interCompanyCompaniesEnumerator.moveNext())&lt;br /&gt;{&lt;br /&gt;if (interCompanyJournalIds.exists(interCompanyCompaniesEnumerator.current()))&lt;br /&gt;{&lt;br /&gt;ok = this.postJournalInterCompany(……);&lt;br /&gt;……&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;} &lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Instance:&lt;/span&gt;&lt;/strong&gt; (General journal Form)&lt;br /&gt;&lt;br /&gt;GL -&amp;gt; Journals -&amp;gt; General journals -&amp;gt; lines&lt;br /&gt;Add two lines as following:&lt;br /&gt;Account Debit Credit Offset account&lt;br /&gt;&lt;br /&gt;11010 1000 12060(intercompany)&lt;br /&gt;&lt;br /&gt;21125 200 40112&lt;br /&gt;&lt;br /&gt;Line 99: The while loop contains all the lines created in the journal form. In this instance, the while loop will be execute twice. One is for “11010, Offset 12060”, another is for “21125, Offset 40112”.&lt;br /&gt;&lt;br /&gt;Line 316: This while loop will be execute twice at most. One is for the Current line account, another is for the offset account. In the end of this loop line357, the ledgerJournalTrans will be changed to its offset account.&lt;br /&gt;&lt;br /&gt;Line 400: The codes within the ‘if’ condition is used to post the legertrans for intercompany. In this instance, the while loop inside the ‘if’ condition will be executed once. Because there is only one intercompany record 12060.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-309823601609784715?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/309823601609784715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=309823601609784715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/309823601609784715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/309823601609784715'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/07/post-journal-illustrate-structure-of.html' title='Post Journal - Illustrate the structure of LedgerJournalcheckPost\postJournal. It is called by most journals.'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2003666466858538792</id><published>2010-06-25T20:46:00.007+05:00</published><updated>2010-10-25T18:44:06.111+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='AX 2009'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>Upgrade from AX3.0, AX4.0 to AX 2009</title><content type='html'>&lt;b&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The steps below provide a high-level overview of the tasks that you must complete to upgrade from Microsoft Dynamics AX 3.0 to Microsoft Dynamics AX 2009.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Back up your existing database and application files. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Import two .xpo files from the installation media to assist with data upgrade.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;UpgradeColumnList.xpo, for 32-bit to 64-bit RecId field conversion.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;LeftJustified.xpo, for removing any trailing spaces from fields.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/span&gt; To help improve performance, you can apply the LeftJustified.xpo on the database that you create in step 4 after you’ve used the Microsoft Dynamics AX DB Upgrade Preparation tool but before you start the Microsoft Dynamics AX 2009 AOS.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(Optional) To help improve performance, remove all user data and logs of Microsoft Dynamics AX 3.0. For example, clean up the SysDatabaseLog table. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Create an empty database for Microsoft Dynamics AX 2009 in SQL Server 2005. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(Optional) To help improve performance, set initial data and log file sizes so that they don’t increase while you perform the data upgrade process. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(Optional) To help improve performance, set the recovery model to Simple for the Microsoft Dynamics AX 2009 Database. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Run AXDBUpgrade.exe (The Microsoft Dynamics AX DB Upgrade Preparation tool). Note: To help improve performance, you can run this tool in Multithreaded mode. For example, to run this tool in 10 threads, enter AxDbUpgrade.exe P/10 at a command prompt. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;(Optional) Apply the LeftJustify file imported in step 2 to the Microsoft Dynamics AX 2009 database created in step 4.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Back up your Microsoft Dynamics AX database. Your database is ready to be upgraded. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Run the Microsoft Dynamics AX 2009 Setup file from the installation media. During installation, select the database that you created in step 4.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Copy your upgraded customized file into the correct application directory. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start the AOS. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start the Microsoft Dynamics AX 2009 client. The Upgrade checklist is displayed automatically. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Complete the steps in the Upgrade checklist to finish upgrading.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The steps below provide a high-level overview of the tasks that you must complete to upgrade from Microsoft Dynamics AX 4.0 to Microsoft Dynamics AX 2009.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Back up your existing database and application files (AX 4.0 database and (*.aod, *.ahd, *.ald, *.add, *.khd files from Dynamics AX 4.0\Application\Appl folder; copy these files from configuration that you wants to be upgrade).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Before you upgrade, you must execute the following SQL script on your AX 4.0 database:&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;--DIMENSIONCOLLECTION &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=1 WHERE FIELDID=50002 AND TABLEID=2897; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=2 WHERE FIELDID=50005 AND TABLEID=2897; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=3 WHERE FIELDID=50007 AND TABLEID=2897; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=4 WHERE FIELDID=50008 AND TABLEID=2897; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;--DIMENSIONHIERARCHYCOMBINATION &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=1 WHERE FIELDID=50002 AND TABLEID=2898; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=2 WHERE FIELDID=50003 AND TABLEID=2898; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=3 WHERE FIELDID=50005 AND TABLEID=2898; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=4 WHERE FIELDID=50006 AND TABLEID=2898; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=5 WHERE FIELDID=50009 AND TABLEID=2898; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;--DIMENSIONSETCOMBINATIONDUP2899 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=1 WHERE FIELDID=50001 AND TABLEID=2899; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=2 WHERE FIELDID=50002 AND TABLEID=2899; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=3 WHERE FIELDID=50003 AND TABLEID=2899; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;--DIMENSIONSETCOMBINATIONTEMP &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=1 WHERE FIELDID=50001 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=2 WHERE FIELDID=50002 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=3 WHERE FIELDID=50003 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=4 WHERE FIELDID=50004 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=5 WHERE FIELDID=50005 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=6 WHERE FIELDID=50006 AND TABLEID=2900; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;--PROVISIONALHIERARCHY &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=1 WHERE FIELDID=50001 AND TABLEID=2901; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=2 WHERE FIELDID=50002 AND TABLEID=2901; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;UPDATE SQLDICTIONARY SET FIELDID=3 WHERE FIELDID=50007 AND TABLEID=2901;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Run the Microsoft Dynamics AX 2009 Setup file from the installation media. During installation, select your existing Microsoft Dynamics AX database (don't start AOS service)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;Go to AX instance location that you installed in last step, normally this location is in \Microsoft Dynamics\5.0\Application\Appl\ folder, create new folder named 'Old' and copy SYS and GLS (*.aod, *.ahd, *.ald, *.add, *.khd) files from AX 4.0 backup to this Old folder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;Back to the location \Microsoft Dynamics\5.0\Application\Appl\&amp;nbsp;and paste all AX 4.0 application files (*.aod, *.ahd, *.ald, *.add, *.khd ) from all layers above the LOS layer ( BUS, VAR, CUS, USR, and respective patch layers) to this location. Delete index file (axapd.aoi - if found) from&amp;nbsp;this directory.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Start the Microsoft Dynamics AX 2009 client. The Upgrade checklist is displayed automatically.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Complete the steps in the Upgrade checklist to finish upgrading.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2003666466858538792?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2003666466858538792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2003666466858538792' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2003666466858538792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2003666466858538792'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/06/upgrade-from-ax30-ax40-to-ax-2009.html' title='Upgrade from AX3.0, AX4.0 to AX 2009'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5822217911299850107</id><published>2010-06-22T12:37:00.002+05:00</published><updated>2010-10-25T18:44:27.058+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='formRun'/><category scheme='http://www.blogger.com/atom/ns#' term='close method'/><title type='text'>close* methods on a form</title><content type='html'>&lt;span style="font-family: verdana;"&gt;There are “only” 5 ways to close a form: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;1. &lt;strong&gt;Close &lt;/strong&gt;- close the form&lt;br /&gt;2. &lt;strong&gt;CloseOK &lt;/strong&gt;– close the form, and set the OK flag – called by the commandbutton: Ok&lt;br /&gt;3. &lt;strong&gt;CloseCancel &lt;/strong&gt;– close the form, and set the Cancel flag – called by the commandbutton: Cancel&lt;br /&gt;4. &lt;strong&gt;CloseSelectRecord &lt;/strong&gt;– close the lookup form, and set return record&lt;br /&gt;5. &lt;strong&gt;CloseSelect &lt;/strong&gt;– close the lookup form, and set return value&lt;br /&gt;&lt;br /&gt;The methods in past-tense are used to determine if or how a form was closed:&lt;br /&gt;6. &lt;strong&gt;Closed &lt;/strong&gt;– The form is no longer open&lt;br /&gt;7. &lt;strong&gt;ClosedOK &lt;/strong&gt;– The form was closed by the user clicking ‘OK’&lt;br /&gt;8. &lt;strong&gt;ClosedCancel &lt;/strong&gt;– The form was closed by the user clicking ‘Cancel’&lt;br /&gt;&lt;br /&gt;And &lt;em&gt;&lt;strong&gt;canClose()&lt;/strong&gt;&lt;/em&gt; is called before any of the close methods get called.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5822217911299850107?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5822217911299850107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5822217911299850107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5822217911299850107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5822217911299850107'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/06/close-methods-on-form.html' title='close* methods on a form'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-2293061449394729677</id><published>2010-06-07T17:28:00.001+05:00</published><updated>2011-01-11T18:04:17.335+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamics AX 6'/><title type='text'>The New Dynamics AX 2011 X++ Editor</title><content type='html'>New features have already been added to the next version of Dynamics AX, Microsoft Dynamics AX 2011.&lt;br /&gt;Some of the new features include:&lt;br /&gt;&lt;br /&gt;1. Ability to see lines in code&lt;br /&gt;2.Improved IntelliSense features (all possibilities will appear once you type)&lt;br /&gt;3.Great ability to select words in editor without selecting the line from the beginning&lt;br /&gt;4.More colors&lt;br /&gt;5.Ability to check Labels value without going to the Label Editor&lt;br /&gt;6... and many more.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Bh9j3671ye4&amp;color1=0x6699&amp;color2=0x54abd6&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Bh9j3671ye4&amp;color1=0x6699&amp;color2=0x54abd6&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="400" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-2293061449394729677?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/2293061449394729677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=2293061449394729677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2293061449394729677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/2293061449394729677'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/06/new-dynamics-ax-2011-x-editor.html' title='The New Dynamics AX 2011 X++ Editor'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4436229561747812788</id><published>2010-05-26T15:41:00.000+05:00</published><updated>2010-05-26T15:46:28.920+05:00</updated><title type='text'>Generic SysTableLookup Method</title><content type='html'>It is often needed to write a custom lookup method and the SysTableLookup class can be useful to create lookups from code. However the following method uses the SysTableLookup in the background but can be called easier.&lt;br /&gt;&lt;br /&gt;When using the SysTableLookup class, for most of the simple lookups (1 datasource table) it is alway the same. You need the following :&lt;br /&gt;&lt;br /&gt;TableId, LookupControl, LookupFields, ReturnFields, SortFields and sometimes the use of a tmpTable.&lt;br /&gt;&lt;br /&gt;Now following method is a generic method to user the SysTableLookup class :&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;&lt;br /&gt;public static void doLookup(TableId             _tableId,&lt;br /&gt;                            Container           _lookupFields,&lt;br /&gt;                            Container           _sortFields,&lt;br /&gt;                            FormStringControl   _control,&lt;br /&gt;                            FieldId             _returnItemFieldNum,&lt;br /&gt;                            Map                 _queryRanges    = null,&lt;br /&gt;                            Boolean             _useTmpTable = false,&lt;br /&gt;                            Common              _tmpBuffer = null&lt;br /&gt;                            )&lt;br /&gt;{&lt;br /&gt;    SysTableLookup          sysTableLookup  = SysTableLookup::newParameters(_tableId, _control);&lt;br /&gt;    Query                   query           = new Query();&lt;br /&gt;    QueryBuildDataSource    qbds;&lt;br /&gt;    int                     i;&lt;br /&gt;    fieldId                 lookupFieldId;&lt;br /&gt;    ;&lt;br /&gt; &lt;br /&gt;    for(i=1;i &amp;lt;= conlen(_lookupFields);i++)&lt;br /&gt;    {&lt;br /&gt;        lookupFieldId = conPeek(_lookupFields, i);&lt;br /&gt; &lt;br /&gt;        if(lookupFieldId == _returnItemFieldNum)&lt;br /&gt;            sysTableLookup.addLookupfield(lookupFieldId, true);&lt;br /&gt;        else&lt;br /&gt;            sysTableLookup.addLookupfield(lookupFieldId);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    qbds = query.addDataSource(_tableId);&lt;br /&gt; &lt;br /&gt;    for(i=1;i &amp;lt;= conlen(_sortFields);i++)&lt;br /&gt;    {&lt;br /&gt;        qbds.addSortField(conPeek(_sortFields, i));&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;    if(_queryRanges)&lt;br /&gt;    {&lt;br /&gt;        rangeEnumerator = _queryRanges.getEnumerator();&lt;br /&gt; &lt;br /&gt;        while (rangeEnumerator.moveNext())&lt;br /&gt;        {&lt;br /&gt;            qbds.addRange(rangeEnumerator.currentKey()).value(any2Str(rangeEnumerator.currentValue()));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    if(_useTmpTable)&lt;br /&gt;        sysTableLookup.parmTmpBuffer(_tmpBuffer);&lt;br /&gt; &lt;br /&gt;    sysTableLookup.parmQuery(query);&lt;br /&gt;    sysTableLookup.performFormLookup();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now when you want to create a lookup you can do it easier by doing the following :&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;&lt;br /&gt;public void lookup()&lt;br /&gt;{&lt;br /&gt;    Container   fieldNums       = [FieldNum(CustTable, AccountNum), FieldNum(CustTable, Name)];&lt;br /&gt;    Container   sortFields      = [FieldNum(CustTable, AccountNum)];&lt;br /&gt;    FieldId     returnFieldId   =  FieldNum(CustTable, AccountNum);&lt;br /&gt;    Map         queryRanges     = new Map(Types::Integer, Types::String);&lt;br /&gt;    ;&lt;br /&gt;    queryRanges.insert(FieldNum(CustTable, AccountNum), '4000');&lt;br /&gt;    LIBSysTableLookup::doLookup(TableNum(CustTable), fieldNums, sortFields, this, returnFieldId, queryRanges);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So the only thing you need to do is specify the fields, returnfields and sortfields…&lt;br /&gt;&lt;br /&gt;Ans let’s look at the following example : We need a lookup with a temporary table. Then we can do it like this :&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;&lt;br /&gt;Container   fieldNums       = [FieldNum(TmpIdRef, Name), FieldNum(TmpIdRef, HelpTxt)];&lt;br /&gt;    Container   sortFields      = [FieldNum(TmpIdRef, Name)];&lt;br /&gt;    FieldId     returnFieldId   = ConPeek(fieldNums, 1);&lt;br /&gt;    TmpIdRef    tmpTable;&lt;br /&gt;    ;&lt;br /&gt;    tmpTable = LIBDifferenceAction::BuildActionClassList();&lt;br /&gt; &lt;br /&gt;    LIBSysTableLookup::doLookup(TableNum(TmpIdRef), fieldNums, sortFields, this, returnFieldId, true, tmpTable);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4436229561747812788?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4436229561747812788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4436229561747812788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4436229561747812788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4436229561747812788'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/05/it-is-often-needed-to-write-custom.html' title='Generic SysTableLookup Method'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1779439483057549119</id><published>2010-05-26T14:32:00.000+05:00</published><updated>2010-05-26T14:35:52.360+05:00</updated><title type='text'>refresh, reread, research, executeQuery - which one to use?</title><content type='html'>X++ developers seem to be having a lot of trouble with these 4 datasource methods, no matter how senior they are in AX.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Common mistakes&lt;/span&gt;&lt;br /&gt;Often, developers call 2 of the mentioned methods in the following order:&lt;br /&gt;&lt;br /&gt;formDataSource.refresh()&lt;br /&gt;formDataSource.research()&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;formDataSource.reread()&lt;br /&gt;formDataSource.research()&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;formDataSource.research()&lt;br /&gt;formDataSource.executeQuery()&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;formDataSource.research()&lt;br /&gt;formDataSource.refresh() / formDataSource.reread()&lt;br /&gt;&lt;br /&gt;All of these are wrong, or at least partially redundant.&lt;br /&gt;Hopefully, after reading the full post, there will be no questions as to why they are wrong. Leave a comment to this post if one of them is still unclear, and I will try to explain in more detail.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Refresh&lt;/span&gt;&lt;br /&gt;This method basically refreshes the data displayed in the form controls with whatever is stored in the form cache for that particular datasource record. Calling refresh() method will NOT reread the record from the database. So if changes happened to the record in another process, these will not be shown after executing refresh().&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;refreshEx&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Does a redraw of the grid rows, depending on the optional argment for specifying the number of the record to refresh (and this means the actual row number in the grid, which is less useful for AX devs). Special argument values include -1, which means that all records will be redrawn, and -2, which redraws all marked records and records with displayOptions. Default argument value is -2.&lt;br /&gt;This method should be used sparingly, in cases where multiple rows from the grid are updated, resulting in changes in their displayOptions, as an example. So you should avoid using it as a replacement for refresh(), since they actually have completely different implementations in the kernel.&lt;br /&gt;Also, note, that refreshEx() only redraws the grid, so the controls not in the grid might still contain outdated values. Refresh() updates everything, since this is its intention.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Reread&lt;/span&gt;&lt;br /&gt;Calling reread() will query the database and re-read the current record contents into the datasource form cache. This will not display the changes on the form until a redraw of the grid contents happens (for example, when you navigate away from the row or re-open the form).&lt;br /&gt;You should not use it to refresh the form data if you have through code added or removed records. For this, you would use a different method described below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;How are these 2 methods commonly used?&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Usually, when you change some values in the current record through some code (for example, when the user clicks on a button), and update the database by calling update method on the table buffer, you would want to show the user the changes that happened.&lt;br /&gt;In this case, you would call reread() method to update the datasource form cache with the values from the database (this will not update the screen), and then call refresh() to actually redraw the grid and show the changes to the user.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;Clicking buttons with SaveRecord == Yes&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Each button has a property SaveRecord, which is by default set to Yes. Whenever you click a button, the changes you have done in the current record are saved to the database. So calling reread will not restore the original record values, as some expect. If that is the user expectation, you as a developer should set the property to No.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Research&lt;/span&gt;&lt;br /&gt;Calling research() will rerun the existing form query against the database, therefore updating the list with new/removed records as well as updating all existing rows. This will honor any existing filters and sorting on the form, that were set by the user.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Research(true)&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The research method starting with AX 2009 accepts an optional boolean argument _retainPosition. If you call research(true), the cursor position in the grid will be preserved after the data has been refreshed. This is an extremely useful addition, which solves most of the problems with cursor positioning (findRecord method is the alternative, but this method is very slow).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. ExecuteQuery&lt;/span&gt;&lt;br /&gt;Calling executeQuery() will also rerun the query and update/add/delete the rows in the grid. The difference in behavior from research is described below.&lt;br /&gt;ExecuteQuery should be used if you have modified the query in your code and need to refresh the form to display the data based on the updated query.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;formDataSource.queryRun().query() vs formDataSource.query()&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;An important thing to mention here is that the form has 2 instances of the query object - one is the original datasource query (stored in formDataSource.query()), and the other is the currently used query with any user filters applied (stored in formDataSource.queryRun().query()).&lt;br /&gt;When the research method is called, a new instance of the queryRun is created, using the formDataSource.queryRun().query() as the basis. Therefore, if the user has set up some filters on the displayed data, those will be preserved.&lt;br /&gt;This is useful, for example, when multiple users work with a certain form, each user has his own filters set up for displaying only relevant data, and rows get inserted into the underlying table externally (for example, through AIF).&lt;br /&gt;Calling executeQuery, on the other hand, will use the original query as the basis, therefore removing any user filters.&lt;br /&gt;This is a distinction that everyone should understand when using research/executeQuery methods in order to prevent possible collisions with the user filters when updating the query.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1779439483057549119?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1779439483057549119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1779439483057549119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1779439483057549119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1779439483057549119'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/05/refresh-reread-research-executequery.html' title='refresh, reread, research, executeQuery - which one to use?'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4407250108388879845</id><published>2010-05-21T12:18:00.000+05:00</published><updated>2010-05-21T12:21:35.855+05:00</updated><title type='text'>Getting started with tracing</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Install the trace parser&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Set up the server to capture tracing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Go to your server configuration in administrative tools.&lt;br /&gt;&lt;br /&gt;2. Manage &gt; Create configuration, give it a name, ok&lt;br /&gt;&lt;br /&gt;3. Tracing tab:&lt;br /&gt;&lt;br /&gt;Check X++ method calls&lt;br /&gt;&lt;br /&gt;Check Function calls, Check the 'Sql Statement', 'Bind Variables'&lt;br /&gt;&lt;br /&gt;Set number of nested calls to 99&lt;br /&gt;&lt;br /&gt;Check Allow client tracing on AOS instance&lt;br /&gt;&lt;br /&gt;4. Hit Apply&lt;br /&gt;&lt;br /&gt;5. Hit OK&lt;br /&gt;&lt;br /&gt;6. Go to your Client configuration in administrative tools.&lt;br /&gt;&lt;br /&gt;7. Manage &gt; Create configuration, give it a name, ok&lt;br /&gt;&lt;br /&gt;8. Tracing tab:&lt;br /&gt;&lt;br /&gt;Check X++ method calls&lt;br /&gt;&lt;br /&gt;Check Function calls&lt;br /&gt;&lt;br /&gt;Set number of nested calls to 99&lt;br /&gt;&lt;br /&gt;9. Hit Apply&lt;br /&gt;&lt;br /&gt;10. Hit OK.&lt;br /&gt;&lt;br /&gt;11. Restart your AOS.&lt;br /&gt;&lt;br /&gt;12. Re-launch your Client configuration screen.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Capture a trace&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Launch your client as 'Administrator' by righ clicking and perform the action you want to trace once without tracing on (to warm up the caches)&lt;br /&gt;&lt;br /&gt;2. In the client config click on "Start tracing"&lt;br /&gt;&lt;br /&gt;3. Walk the action you want to trace again.&lt;br /&gt;&lt;br /&gt;4. In the Client config click on "Stop tracing".&lt;br /&gt;&lt;br /&gt;5. Go to the directory specified at the top of the tracing tab in the server config and sort by modified date. The most recent file should be a .trc file.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Analyze the trace&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Start the trace parser. If it’s the first time you run it, you’ll be asked a bunch of questions. Be agreeable.&lt;br /&gt;&lt;br /&gt;2. File &gt; Import, pick that .trc files you just captured.&lt;br /&gt;&lt;br /&gt;3. Start analyzing&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;I normally first go to the X++/RPC tab and filter by type, totals. Sort by Exclusive RPC calls first, see what’s causing issues. Then sort by inclusive RPC calls and see what’s causing issues. Then Exclusive duration, inclusive duration, etc. General rule of thumb is if you see “your code” in the top couple pages of data for any of those things, you should work to make it better. You can jump to the call stacks causing the calls and stuff. Just look for random ways to make your stuff faster, pull from caches instead of doing round trips, cut down on how many times you’re called, etc. No real science to it, just look for crappy stuff and fix it.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;If you want to trace the client it’s the exact same thing, only use the client config instead.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If it doesn’t work&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;·         Make sure you have at least 20 gig of free space on the drive where your log files are located. ETW doesn’t like to run with less than that.&lt;br /&gt;&lt;br /&gt;·         Make sure you restarted the client or AOS after setting up the tracing options.&lt;br /&gt;&lt;br /&gt;·         Make sure you wait about 15 seconds after you click “start trace” before you start doing stuff. It takes a couple seconds (usually about 5) before the tracing turns on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4407250108388879845?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4407250108388879845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4407250108388879845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4407250108388879845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4407250108388879845'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/05/getting-started-with-tracing.html' title='Getting started with tracing'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5615368503095083618</id><published>2010-01-23T23:29:00.000+05:00</published><updated>2010-01-23T23:33:01.893+05:00</updated><title type='text'>Working with Forms in Dynamics AX</title><content type='html'>Following links are really helpful for Axapta form development&lt;br /&gt;&lt;a href="http://www.packtpub.com/article/working-with-forms-in-dynamics-ax-part1"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/article/working-with-forms-in-dynamics-ax-part2?utm_source=js_dynamics_cookbook_abr1_1209&amp;utm_medium=content&amp;utm_campaign=janice"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/article/working-with-forms-in-dynamics-ax-part3?utm_source=js_dynamics_cookbook_abr1_1209&amp;utm_medium=content&amp;utm_campaign=janice"&gt;Part III&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5615368503095083618?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5615368503095083618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5615368503095083618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5615368503095083618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5615368503095083618'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2010/01/working-with-forms-in-dynamics-ax.html' title='Working with Forms in Dynamics AX'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7347471672792925831</id><published>2009-08-27T11:49:00.001+06:00</published><updated>2010-10-25T18:45:17.660+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Client'/><category scheme='http://www.blogger.com/atom/ns#' term='CalledFrom'/><category scheme='http://www.blogger.com/atom/ns#' term='RunOn'/><title type='text'>RunOn property in Axapta</title><content type='html'>The class has a RunOn property that have three values: Client, Called From and Server. Objects created from the class will then live at the location specified.&lt;br /&gt;If you choose Called from, the object will live at the tier where the code creating it (by calling the new constructor) is running.&lt;br /&gt;Classes extending other classes will also inherit the RunOn property. You cannot change it if it is Client or Server. If it is Called from, you can leave it or change it to Client or Server.&lt;br /&gt;But someone may wonder that menu items have their RunOn properties, what will happen if the RunOn property of a given menu item pointing to a class is set to Server, whereas the class's RunOn property is set to Client. The answer is that only if the Class's RunOn property is set to Called From, the objects will be created determined by menu item's RunOn property.&lt;br /&gt;Also there is another situation, the class has static main method which has a RunOn property as well. What will happen if the menu item's RunOn property is set to client, whereas main method has a server modifier. The answer is it will determined by main method's modifier.&lt;br /&gt;Axapta will create the objects according to the prioritized sequence of Class's RunOn property, Class's main method's modifier, menu item's RunOn property. And please notice that in Fat Client mode, even you can set the Class's RunOn property to Server, Axapta will still create the objects in client side instead of Server side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7347471672792925831?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7347471672792925831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7347471672792925831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7347471672792925831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7347471672792925831'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/08/runon-property-in-axapta.html' title='RunOn property in Axapta'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4089983999075889598</id><published>2009-08-05T17:39:00.000+06:00</published><updated>2009-08-05T17:41:33.733+06:00</updated><title type='text'>Create and Post Free Text Invoice in AX</title><content type='html'>Here is a sample class which is called via Dialog framework to create &amp; post free text invoice using X++ code.&lt;br /&gt; &lt;br /&gt;Job:&lt;br /&gt;public void freeTextInvoicePostTestJob()&lt;br /&gt;{&lt;br /&gt;    Dialog                dialog;&lt;br /&gt;    DialogField     dlgCustAcc;&lt;br /&gt;    DialogGroup   dialogPeriodLengthGroup, dialogPeriodLengthGroup1;&lt;br /&gt;    DialogField     dlgLedgerAcc;&lt;br /&gt;&lt;br /&gt;    dialog                    = new Dialog("Free-Text Invoice");&lt;br /&gt;    dialogPeriodLengthGroup1  = dialog.addGroup('Cust Table');&lt;br /&gt;    dlgCustAcc                                   = dialog.addField(extendedTypeStr(CustAccount));&lt;br /&gt;    dialogPeriodLengthGroup   = dialog.addGroup('Ledger Table');&lt;br /&gt;    dlgLedgerAcc              = dialog.addField(extendedTypeStr(LedgerAccount));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    if(dialog.run())&lt;br /&gt;    {&lt;br /&gt;        if(dlgCustAcc.value() &amp;&amp; dlgLedgerAcc.value() != '')&lt;br /&gt;            FreeTxtInvoiceCreatePost::main(dlgCustAcc.value(), dlgLedgerAcc.value());&lt;br /&gt;        else&lt;br /&gt;             throw error(strfmt("Either CustAccount or LedgerAccount info is missing."));&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;class FreeTxtInvoiceCreatePost&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;static void main(CustAccount _custAccount, LedgerAccount _ledgerAccount)&lt;br /&gt;{&lt;br /&gt;    CustInvoiceTable    custInvoiceTable;&lt;br /&gt;    CustInvoiceLine      custInvoiceLine;&lt;br /&gt;    CustTable               custTable;&lt;br /&gt;    LedgerTable           ledgerTable;&lt;br /&gt;    CustPostInvoice     custPostInvoice;&lt;br /&gt;    LineNum                lineNum;&lt;br /&gt;    int                          i;&lt;br /&gt;&lt;br /&gt;    ttsbegin;&lt;br /&gt;    custTable = CustTable::find(_custAccount);&lt;br /&gt;    custInvoiceTable.initFromCustTable(custTable);&lt;br /&gt;    custInvoiceTable.insert();&lt;br /&gt;    ttscommit;&lt;br /&gt;&lt;br /&gt;    for(i=1; i&lt;=100; i++)&lt;br /&gt;    {&lt;br /&gt;        ttsbegin;&lt;br /&gt;        ledgerTable = LedgerTable::find(_ledgerAccount);&lt;br /&gt;        custInvoiceLine.clear();&lt;br /&gt;        custInvoiceLine.initValue();&lt;br /&gt;        custInvoiceLine.LedgerAccount = ledgerTable.AccountNum;&lt;br /&gt;        custInvoiceLine.initFromCustInvoiceTable(custInvoiceTable);&lt;br /&gt;        custInvoiceLine.AmountCur = 10.00;&lt;br /&gt;        custInvoiceLine.Description = 'FreeTxIv' + int2str(i);&lt;br /&gt;        custInvoiceLine.TaxItemGroup = 'full';&lt;br /&gt;        custInvoiceLine.ParentRecId = custInvoiceTable.RecId;&lt;br /&gt;&lt;br /&gt;        lineNum += 1;&lt;br /&gt;        custInvoiceLine.LineNum = lineNum;&lt;br /&gt;        custInvoiceLine.insert();&lt;br /&gt;        ttscommit;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    custPostInvoice = new CustPostInvoice(custInvoiceTable);&lt;br /&gt;    custPostInvoice.run();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4089983999075889598?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4089983999075889598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4089983999075889598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4089983999075889598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4089983999075889598'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/08/create-and-post-free-text-invoice-in-ax.html' title='Create and Post Free Text Invoice in AX'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1422442238312008185</id><published>2009-08-05T11:44:00.001+06:00</published><updated>2009-08-05T11:44:56.616+06:00</updated><title type='text'>Updating records and calling super</title><content type='html'>Before a record in AX gets updated an external application gets started. This external application is able to do additional update on the same record in AX by using AIF. As the performance of the external route is slow, an additional check is needed to start this process only if needed.&lt;br /&gt;&lt;br /&gt;So what do we have?&lt;br /&gt;&lt;br /&gt;A.      Do I need to compare this with this.orig() before or after super?&lt;br /&gt;B.      Do I need to call this external application before or after super?&lt;br /&gt;&lt;br /&gt;If we call the external application before super, AX will complain that another user has updated the record. So we have to do it after super.  Fine, but what happens…. After super the original record gets equal to the current record.  Ouch so the difference between the record and the original record only exists before super.  The solution is to make a local buffer variable in the update method that references the original record before calling super. This buffer will still be used after calling super.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;void update()&lt;br /&gt;{&lt;br /&gt;    CustTable ctBuffer = this.orig();&lt;br /&gt;    Super();&lt;br /&gt;    If(this.name !=  ctBuffer.name)&lt;br /&gt;       //call external application&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1422442238312008185?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1422442238312008185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1422442238312008185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1422442238312008185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1422442238312008185'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/08/updating-records-and-calling-super.html' title='Updating records and calling super'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-9198548718696622173</id><published>2009-08-04T19:51:00.001+06:00</published><updated>2010-10-25T18:45:51.931+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='traceParser'/><title type='text'>AX 2009 TraceParser</title><content type='html'>This is very useful link that give some in depths about TraceParser&lt;br /&gt;1. &lt;a href="http://blogs.msdn.com/axperf/archive/2008/07/18/traceparser-video-training-part-i-installation.aspx"&gt;TraceParser Video Training Part I: Installation.&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://blogs.msdn.com/axperf/archive/2008/07/30/traceparser-video-training-part-ii-configuration-collection-and-importing.aspx"&gt;TraceParser Video Training Part II: Configuration, Collection and Importing.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-9198548718696622173?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/9198548718696622173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=9198548718696622173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/9198548718696622173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/9198548718696622173'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/08/ax-2009-traceparser.html' title='AX 2009 TraceParser'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4014527490896622094</id><published>2009-08-03T16:14:00.000+06:00</published><updated>2009-08-03T16:17:04.983+06:00</updated><title type='text'>Where do you want your code to run today</title><content type='html'>Much of the X++ code you write can run on either the Application Object Server, or the Client.  The client can be the Win32 client, or BC.NET for Enterprise Portal.  MorhpX generally will not direct your code to run on a specific tier, but you as an application developer can control it.&lt;br /&gt; &lt;br /&gt;Whether code runs on the server or on the client has performance and security implications, and should be given careful consideration as a part of design.  Occasionally it will be correct to methods run on either tier, but usually this is not the case.&lt;br /&gt; &lt;br /&gt;As MS move forward implementing tasks in upcoming release, developers will identify which resources to grant access to for a given task.  These resources include tables/fields and server entry points.  A server entry point is a specially decorated method that runs on the server.  Tables/fields accessed inside this server entry point need NOT be identified with the task, greatly reducing the complexity and effort required to implement the task.  If the server entry point is NOT executed on the server, then table/field access is still validated, and will fail if the code accesses a table/field that is not included with the task.&lt;br /&gt;&lt;br /&gt;So, in short:&lt;br /&gt;Set the RunOn AOT property to Server or Client for new classes, unless you have a reason to leave the default &lt;br /&gt;Include considerations about where the code runs in your design, and look for it when reviewing design documents &lt;br /&gt;Declare static class methods, table static and instance methods with either the "server" or the "client" keyword, unless you have a reason not to &lt;br /&gt;Look for ways to limit direct table and field access in form methods, try to move this into a class&lt;br /&gt;&lt;br /&gt;This page MSDN describes where methods run:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa891949.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa891949.aspx&lt;/a&gt;.  Additional information to cover more object types at &lt;a href="http://msdn.microsoft.com/en-us/library/aa634829.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa634829.aspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4014527490896622094?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4014527490896622094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4014527490896622094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4014527490896622094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4014527490896622094'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/08/where-do-you-want-your-code-to-run.html' title='Where do you want your code to run today'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-106951516378294776</id><published>2009-07-21T14:53:00.000+06:00</published><updated>2009-07-21T14:56:18.650+06:00</updated><title type='text'>Iterate all records from grid</title><content type='html'>To iterate all record from a grid is accomplished by :&lt;br /&gt;&lt;br /&gt;VendOutPaymForParams_FI exportSetupLocal;&lt;br /&gt;&lt;br /&gt;for (exportSetupLocal = exportSetup_ds.getNext();exportSetupLocal;exportSetupLocal=exportSetup_ds.getNext())&lt;br /&gt;    {&lt;br /&gt;        B....&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-106951516378294776?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/106951516378294776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=106951516378294776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/106951516378294776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/106951516378294776'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/iterate-all-records-from-grid.html' title='Iterate all records from grid'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1223707190156984648</id><published>2009-07-14T18:56:00.001+06:00</published><updated>2009-07-14T18:56:57.052+06:00</updated><title type='text'>Getting rid of the "Loss of precision" warning message</title><content type='html'>A question came up at today's webinar where a developer had a (presumably legitimate) reason to cast a real value into an integer value. The X++ language does not allow explicit casting (there's no support for it in the language), but the compiler will do its best to satisfy the user and do the conversion on its own. In this case, however, it issues a warning message, lest this is not what the user wanted.&lt;br /&gt;&lt;br /&gt;One solution is to use the anytype type to hold the vaue for conversion and then using the any2int function, as shown below:&lt;br /&gt;&lt;br /&gt;static void Job47(Args _args) &lt;br /&gt;{&lt;br /&gt;real r = 3.13; &lt;br /&gt;int i = r;      // Warning is issued here &lt;br /&gt;anytype a; &lt;br /&gt;&lt;br /&gt;a = r;          // Assign to an anytype variable... &lt;br /&gt;i = any2int(a); // ... and back into an int &lt;br /&gt;&lt;br /&gt;print r; &lt;br /&gt;print i; &lt;br /&gt;pause;&lt;br /&gt;}&lt;br /&gt;This should be packaged into a function, maybe called int RealToInt(real arg).&lt;br /&gt;&lt;br /&gt;Another way would be doing the conversion in managed code (through the System.Convert::ToInt32(object) method), but the performance will not be as good because of the marshalling that needs to take place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1223707190156984648?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1223707190156984648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1223707190156984648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1223707190156984648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1223707190156984648'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/getting-rid-of-loss-of-precision.html' title='Getting rid of the &quot;Loss of precision&quot; warning message'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1350830564344205960</id><published>2009-07-14T18:53:00.000+06:00</published><updated>2009-07-14T18:54:20.174+06:00</updated><title type='text'>Forthcoming changes to the X++ language</title><content type='html'>Very informative link for new X++ release &lt;br /&gt;&lt;a href="http://blogs.msdn.com/x/archive/2009/06/29/forthcoming-changes-to-the-x-language.aspx"&gt;http://blogs.msdn.com/x/archive/2009/06/29/forthcoming-changes-to-the-x-language.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1350830564344205960?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1350830564344205960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1350830564344205960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1350830564344205960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1350830564344205960'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/forthcoming-changes-to-x-language.html' title='Forthcoming changes to the X++ language'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5534112112205236302</id><published>2009-07-06T19:56:00.000+06:00</published><updated>2009-07-06T19:57:17.576+06:00</updated><title type='text'>How to get all changes done in usr layer into project.</title><content type='html'>Create a new project and open the project.&lt;br /&gt;&lt;br /&gt;Press Ctrl+f3 or click on the icon advance filter/sort on the toolbar of the &lt;br /&gt;project, a dialog with name project filter will be opened. &lt;br /&gt;&lt;br /&gt;In project filter, select append and aot.Click select for the query dialog &lt;br /&gt;to open enter the query layer usr in the utillevel range and click Ok to &lt;br /&gt;close query dialog .&lt;br /&gt;Click Ok to close the project filter dialog. This will create a project with the objects of usr layer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5534112112205236302?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5534112112205236302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5534112112205236302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5534112112205236302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5534112112205236302'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/how-to-get-all-changes-done-in-usr.html' title='How to get all changes done in usr layer into project.'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1788557500704578854</id><published>2009-07-03T21:06:00.000+06:00</published><updated>2009-07-03T21:08:50.682+06:00</updated><title type='text'>Physics behind the data source refresh(), reread() and research() method</title><content type='html'>&lt;strong&gt;.refresh() &lt;/strong&gt;will not reread the record from the database.  It basically&lt;br /&gt;just refreshes the screen with whatever is stored in the form cache.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;.reread()&lt;/strong&gt; will only re-read the CURRENT record from the DB so you&lt;br /&gt;should not use it to refresh the form data if you have added/removed&lt;br /&gt;records.  It's often used if you change some values in the current&lt;br /&gt;record in some code, and commit them to the database using .update()&lt;br /&gt;on the table, instead of through the form datasource.  In this case&lt;br /&gt;.reread() will make those changes appear on the form.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;.research()&lt;/strong&gt; is probably what you want.  This will rerun the existing&lt;br /&gt;form query against the datasource, therefore updating the list with&lt;br /&gt;new/removed records as well as updating existing ones.  This will&lt;br /&gt;honour any existing filters and sorting on the form.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;.executeQuery()&lt;/strong&gt; is another useful one.  It should be used if you have&lt;br /&gt;modified the query in your code and need to refresh the form.  It's&lt;br /&gt;like .research() except it takes query changes into account.&lt;br /&gt;&lt;br /&gt;In general, you only need to use one of these in any specific&lt;br /&gt;circumstance.&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1788557500704578854?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1788557500704578854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1788557500704578854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1788557500704578854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1788557500704578854'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/physics-behind-data-source-refresh.html' title='Physics behind the data source refresh(), reread() and research() method'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6271334655512690990</id><published>2009-07-03T20:41:00.000+06:00</published><updated>2009-07-03T20:50:10.500+06:00</updated><title type='text'>Set the specific row in a grid</title><content type='html'>The specific row of grid can be set by calling the dataSource_ds.findRecord(Common _buffer) method. Suppose we want to select third row (i.e Account # 4003) in a customer table grid, here is the code&lt;br /&gt;&lt;br /&gt;CustTable_ds.findRecord(CustTable::find('4003'));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6271334655512690990?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6271334655512690990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6271334655512690990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6271334655512690990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6271334655512690990'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/07/set-specific-row-in-grid.html' title='Set the specific row in a grid'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6594747194862994501</id><published>2009-06-09T12:58:00.000+06:00</published><updated>2009-06-09T13:00:46.233+06:00</updated><title type='text'>Trade &amp; Logistics</title><content type='html'>Some T &amp; L notes :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Purchase order form opens, by default in the Simple view and shows the last purchase order created.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Unit &lt;/span&gt;- The purchase unit is the unit of measure that the item is purchased. There is a close relationship between the purchase unit and the inventory unit. For example, the item may be purchased in kilos and stocked in grams.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;One-time supplier&lt;/span&gt; - For use of a supplier that is not already in the Vendors form.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Invoice account&lt;/span&gt; - Invoice account is used if the account number of the vendor you send the invoice to and pay differs from the vendor with whom you place the purchase order.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;RMA number&lt;/span&gt; - The dialog box displays the Return Merchandise Authorization number (RMA number) when Return Item is selected in the Purchase type field. This number is provided by your supplier and is used for tracking a return item. The field is mandatory when the purchase type is Returned item.&lt;br /&gt;In this field group, specify the language setting for the purchase order. This affects the language that is used for item names and for printing external purchase order documents.&lt;br /&gt;EXAMPLE: Select an item and click Setup - Language - Item&lt;br /&gt;description. Select a language and enter the translation text. Create a new&lt;br /&gt;purchase order and in the Language field group select the language for which&lt;br /&gt;you created a translated text. Print, for example, a receipts list and the&lt;br /&gt;item's name is printed out using the foreign language text.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6594747194862994501?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6594747194862994501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6594747194862994501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6594747194862994501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6594747194862994501'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/06/trade-logistics.html' title='Trade &amp; Logistics'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1463244127282545799</id><published>2009-06-09T12:57:00.000+06:00</published><updated>2009-06-09T12:58:08.775+06:00</updated><title type='text'>Trade &amp; Logistics Puchase Order Types</title><content type='html'>Types of Purchase Order -&lt;br /&gt;&lt;br /&gt;There are 6 Purchase order types:&lt;br /&gt;Journal&lt;br /&gt;Quotation&lt;br /&gt;Subscription&lt;br /&gt;Purchase Order&lt;br /&gt;Returned Item&lt;br /&gt;Blanket Order&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Journal&lt;/span&gt;&lt;br /&gt;The first Purchase order type is the journal. This type is used as a draft. It does not affect stock quantities and does not generate any item transactions and the quantity on the order line will not be considered in the Master scheduler. It can't be posted&lt;br /&gt;EXAMPLE: A purchase order of the type Journal can be used when importing data by batch; in this manner, the purchase order can be reviewed and evaluated without affecting inventory, on-order, or other numbers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Quotation &lt;/span&gt;&lt;br /&gt;This kind of purchase order is used if the vendor has not yet committed to fulfilling the order if the company has not confirmed the purchase order. Quotation type generates an issue lot with the type Quotation in the inventory and optionally in the Master scheduler.&lt;br /&gt;Unlike the Journal type, the Quotation makes an entry in the inventory transaction table. Making this transaction is what enables Microsoft Dynamics AX to use this information for Master scheduling purposes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Subscription&lt;/span&gt; &lt;br /&gt;This kind of purchase order is used for repeated purchases of the same goods or services. When a packing slip is updated, Microsoft Dynamics AX generates a receipt. When the invoice is updated for the receipt, a new packing slip or invoice entry can be updated for the same purchase line immediately or at some future date. The order will never be at an Invoiced status only Open or Received.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Returned Item&lt;/span&gt;&lt;br /&gt;This type is used when you return goods to the vendor. A Return Merchandise Authorization (RMA) number supplied by the vendor is required when entering this kind of order&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Blanket Order&lt;/span&gt;&lt;br /&gt;This kind of purchase order is used if there is a contract with the vendor and you want to order from the contract. Typically, a company uses blanket orders to receive better pricing conditions as the blanket order quantity is bigger than on single purchase orders. You can create a Release order to release, order, and invoice items until the contract is fulfilled. Blanket orders do not affect stock quantities, do not generate item transactions, and are not included in Master scheduling. Release orders, issued from Blanket orders, do affect all the above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1463244127282545799?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1463244127282545799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1463244127282545799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1463244127282545799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1463244127282545799'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/06/trade-logistics-puchase-order-types.html' title='Trade &amp; Logistics Puchase Order Types'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-3413613541012927408</id><published>2009-06-09T12:54:00.000+06:00</published><updated>2009-06-09T12:56:25.424+06:00</updated><title type='text'>Trade and Logistics - Sales order Types</title><content type='html'>There are 6 types of Sales orders -&lt;br /&gt;&lt;br /&gt;Journal&lt;br /&gt;Subscription&lt;br /&gt;Sales Order&lt;br /&gt;Returned item&lt;br /&gt;Blanket order&lt;br /&gt;Item Requirements&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Journal&lt;/span&gt;&lt;br /&gt;Sales orders of the type Journal resembles purchase orders of type Journal because they are also used as types of draft sales orders.Journals help when bringing data into the system that may not meet quality or other standards, as can be the case with data loads or data keyed by a new or temporary worker.A sales order of the type Journal does not affect stock quantities and does not generate item transactions nor will the quantity on the order line be considered in the Master scheduler.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Subscription&lt;/span&gt;&lt;br /&gt;This kind of sales order is used for repeated sales of the same goods or services to the same customer. When a packing slip is updated, Microsoft Dynamics AX generates a packing slip. When the invoice is updated, a new packing slip or invoice entry can be updated for the same sales line. The order never has an Invoiced status, only Open or Delivered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sales Order&lt;/span&gt;&lt;br /&gt;This kind of sales order is used when the customer confirms that they want the order. When you create a new order, the type can be set to default to Sales order type in the parameters form depending on the client's business process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Returned Item&lt;/span&gt;&lt;br /&gt;This kind of sales order is used when receiving goods back from a customer. A Return Item Number is required for this kind of order and can automatically be assigned by Microsoft Dynamics AX 4.0 by the number sequence set up or manually assigned by the user.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Item Requirements&lt;/span&gt;&lt;br /&gt;The Sales order type of Item Requirements is connected to the Microsoft Dynamics AX Project Module. When you create your item requirements in the Project module, you create a sales order of the type Item requirements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-3413613541012927408?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/3413613541012927408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=3413613541012927408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3413613541012927408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/3413613541012927408'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/06/trade-and-logistics-sales-order-types.html' title='Trade and Logistics - Sales order Types'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-8496899719981956721</id><published>2009-06-09T12:51:00.000+06:00</published><updated>2009-06-09T12:52:01.308+06:00</updated><title type='text'>BOM overview and Types</title><content type='html'>&lt;span style="font-weight:bold;"&gt;BOM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;BOM is one of the most important documents in a manufacturing company. Like the&lt;br /&gt;recipe for a cake, it is a comprehensive list of all the ingredients required to&lt;br /&gt;make or assemble a finished item. These ingredients are the components, parts&lt;br /&gt;and raw materials that are used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;BOM Types&lt;/span&gt;&lt;br /&gt;Item - usually is purchased from outside source&lt;br /&gt;BOM - produced in-house and contains components to go for the finished product&lt;br /&gt;Service - represents a service e.g. hourly rates for services during manufacturing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-8496899719981956721?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/8496899719981956721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=8496899719981956721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8496899719981956721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/8496899719981956721'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/06/bom-overview-and-types.html' title='BOM overview and Types'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4054668508144227941</id><published>2009-06-09T12:49:00.000+06:00</published><updated>2009-06-09T12:50:08.787+06:00</updated><title type='text'>Ten MorphX Tricks</title><content type='html'>Here's a great video from mfp...&lt;br /&gt;&lt;a href="http://channel9.msdn.com/posts/mfp/10-MorphX-tricks-in-10-minutes/"&gt;http://channel9.msdn.com/posts/mfp/10-MorphX-tricks-in-10-minutes/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4054668508144227941?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4054668508144227941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4054668508144227941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4054668508144227941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4054668508144227941'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/06/ten-morphx-tricks.html' title='Ten MorphX Tricks'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1015818440749752345</id><published>2009-05-27T11:39:00.001+06:00</published><updated>2009-05-27T11:39:43.666+06:00</updated><title type='text'>WMS in Microsoft Dynamics® AX 2009. Shipping Process Overview</title><content type='html'>ntroduction The WMS (Warehouse Managements System) encompasses the core components within average Microsoft Dynamics AX installations that are implemented to manage and run world class warehouses. The WMS functionality is enabled by the configuration &lt;a href="http://blogs.msdn.com/dynamicsaxscm/archive/2009/04/06/wms-in-microsoft-dynamics-ax-2009-shipping-process-overview.aspx"&gt;Read More...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1015818440749752345?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1015818440749752345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1015818440749752345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1015818440749752345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1015818440749752345'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/05/wms-in-microsoft-dynamics-ax-2009.html' title='WMS in Microsoft Dynamics® AX 2009. Shipping Process Overview'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1134336321036821053</id><published>2009-05-27T11:38:00.000+06:00</published><updated>2009-05-27T11:39:08.075+06:00</updated><title type='text'>Changes in Sales and Transfer Order Picking from Microsoft Dynamics AX 4.0 to Dynamics AX 2009</title><content type='html'>Overview The purpose of this post is to present the major changes and new functionality that was introduced for sales and transfer order picking in AX 2009. The aim and the idea behind these changes is to move towards a single system for picking that &lt;a href="http://blogs.msdn.com/dynamicsaxscm/archive/2009/05/17/changes-in-sales-and-transfer-order-picking-from-microsoft-dynamics-ax-4-0-to-dynamics-ax-2009.aspx"&gt;Read More...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1134336321036821053?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1134336321036821053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1134336321036821053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1134336321036821053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1134336321036821053'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/05/changes-in-sales-and-transfer-order.html' title='Changes in Sales and Transfer Order Picking from Microsoft Dynamics AX 4.0 to Dynamics AX 2009'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4214946462504519937</id><published>2009-05-27T11:35:00.000+06:00</published><updated>2009-05-27T11:36:44.242+06:00</updated><title type='text'>Supply Chain Management in Dynamics AX</title><content type='html'>&lt;a href="http://blogs.msdn.com/DynamicsAxSCM/"&gt;Here &lt;/a&gt;is a link of SCM in Dynamics AX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4214946462504519937?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4214946462504519937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4214946462504519937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4214946462504519937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4214946462504519937'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/05/supply-chain-management-in-dynamics-ax.html' title='Supply Chain Management in Dynamics AX'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-4575911631426529752</id><published>2009-05-27T11:33:00.000+06:00</published><updated>2009-05-27T11:34:02.205+06:00</updated><title type='text'>Dynamics Ax 2009 VPC available</title><content type='html'>Microsoft have released a Virtual PC image of Dynamics Ax 2009 (the new name for Dynamics Ax version 5)&lt;br /&gt;&lt;br /&gt;You can download it and user manuals from &lt;a href="https://mbs.microsoft.com/partnersource/documentation/howtoarticles/VPCImageAX2009CTP3.htm"&gt;here &lt;/a&gt;(requires partnersource access)&lt;br /&gt;&lt;br /&gt;It's almost 7 GB in total and is designed to work on a single laptop/PC (as opposed to a server)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-4575911631426529752?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/4575911631426529752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=4575911631426529752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4575911631426529752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/4575911631426529752'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/05/dynamics-ax-2009-vpc-available.html' title='Dynamics Ax 2009 VPC available'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-9200614493653142798</id><published>2009-05-27T11:30:00.000+06:00</published><updated>2009-05-27T11:32:23.982+06:00</updated><title type='text'>Dynamics Ax - Task Recorder</title><content type='html'>This is a free add-on for Ax that allows you to record whatever you're doing in Ax (forms that open, user input and screenshots) and automatically create documentation for you&lt;br /&gt;&lt;br /&gt;So far I've been using it to produce Microsoft Word documents that will become part of a user manual for a bespoke Ax module&lt;br /&gt;&lt;br /&gt;This is the first time we've actually managed to get it to work! Whenever we've tried it in the past it just wasn't useable&lt;br /&gt;So for anyone else who's had problems with it, try the latest version, after having used it for several weeks without problems, I can recommend it&lt;br /&gt;&lt;br /&gt;It's a LOT easier than taking hundreds of screenshots and cutting/pasting them into a word document&lt;br /&gt;&lt;br /&gt;It's by no means perfect though, and there is still a fair amount of editing required before the document that it spews out is presentable enough to be of any use to an end-user, but it does make life easier&lt;br /&gt;&lt;br /&gt;You can download it from &lt;a href="http://www.microsoft.com/dynamics/partnersource.mspx"&gt;here &lt;/a&gt;(requires partnersource login)&lt;br /&gt;&lt;br /&gt;There's a brief but succinct description &lt;a href="http://www.axaptapedia.com/Task_Recorder"&gt;here &lt;/a&gt;at the axaptapedia too&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-9200614493653142798?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/9200614493653142798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=9200614493653142798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/9200614493653142798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/9200614493653142798'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/05/dynamics-ax-task-recorder.html' title='Dynamics Ax - Task Recorder'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-149474166682651128</id><published>2009-04-24T12:43:00.000+06:00</published><updated>2009-04-24T12:45:55.188+06:00</updated><title type='text'>How to traverse multiple selected lines in a grid control by using X++ code in Microsoft Axapta</title><content type='html'>This post describes how to use X++ code to traverse multiple selected lines in a grid control in Microsoft Business Solutions - Axapta. Do this when multiple rows of the information in the grid control contain the information which is required to perform the required request.&lt;br /&gt;For example, you can use the following code in the click event of the button if you want to traverse two selected lines when the second row and the fourth row are highlighted in a grid control.&lt;br /&gt;&lt;br /&gt;void clicked()&lt;br /&gt;{&lt;br /&gt;CustTable ct;&lt;br /&gt;;&lt;br /&gt;//ct is set to the forms data source and using a cursor goes through each record selected in the grid.&lt;br /&gt;for (ct = DataSource1_ds.getFirst(true) ? DataSource1_ds.getFirst(true): DataSource1_ds.cursor(); ct;ct=DataSource1_ds.getNext())&lt;br /&gt;{&lt;br /&gt;print ct.AccountNum," ",ct.Name;&lt;br /&gt;}&lt;br /&gt;super();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-149474166682651128?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/149474166682651128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=149474166682651128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/149474166682651128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/149474166682651128'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/04/how-to-traverse-multiple-selected-lines.html' title='How to traverse multiple selected lines in a grid control by using X++ code in Microsoft Axapta'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7711791531010244850</id><published>2009-04-24T12:42:00.000+06:00</published><updated>2009-04-24T12:43:21.043+06:00</updated><title type='text'>Sample X++ code that you can use to disable or to hide a query range in Microsoft Axapta</title><content type='html'>The following code sample shows how to use X++ code to create a query that contains three ranges. In the code sample, only one specified range can be changed by the end user. In the code sample, the following conditions are true: &lt;br /&gt;• The first range is not shown.&lt;br /&gt;• The second range is shown but cannot be edited.&lt;br /&gt;• The third range can obtain the input from the end user.&lt;br /&gt;&lt;br /&gt;static void QueryStatusTest(Args _args)&lt;br /&gt;{&lt;br /&gt;    Query                   q;&lt;br /&gt;    Queryrun                qr;&lt;br /&gt;    QueryBuildRange         qbr,qbr1,qbr2;&lt;br /&gt;    QueryBuildDataSource    qbds;&lt;br /&gt;    VendTable               vt;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    // Create an instance of the query class and then provide a name of "Vendors."&lt;br /&gt;    q = new query("Vendors");&lt;br /&gt;&lt;br /&gt;    // Create a data source that connects to the VendTable table.&lt;br /&gt;    qbds = q.addDataSource(tablenum(VendTable));&lt;br /&gt;&lt;br /&gt;    // Use three different field names to create three ranges.&lt;br /&gt;    qbr  = qbds.addRange(fieldnum(VendTable,AccountNum));&lt;br /&gt;    qbr1 = qbds.addRange(fieldnum(VendTable,Blocked));&lt;br /&gt;    qbr2 = qbds.addRange(fieldnum(VendTable,Name));&lt;br /&gt;&lt;br /&gt;    // Set the values for the three ranges.&lt;br /&gt;    qbr.value('3*');&lt;br /&gt;    qbr1.value(strfmt('(%1 == %2)',fieldstr(VendTable,Blocked),any2int(CustVendorBlocked::No)));&lt;br /&gt;    qbr2.value('Office World');&lt;br /&gt;    &lt;br /&gt;    // Set the status of each range.&lt;br /&gt;    qbr.status(1);&lt;br /&gt;    qbr1.status(2);&lt;br /&gt;    qbr2.status(0);&lt;br /&gt;&lt;br /&gt;    // Create an instance of the QueryRun class.&lt;br /&gt;    qr = new QueryRun(q);&lt;br /&gt;&lt;br /&gt;    // Verify that the QueryRun form is active, and then parse the tablenum value through the VendTable table.&lt;br /&gt;    If (qr.prompt())&lt;br /&gt;    {&lt;br /&gt;        while (qr.next())&lt;br /&gt;        {&lt;br /&gt;            vt = qr.get(tablenum(VendTable));&lt;br /&gt;            print vt;&lt;br /&gt;        }&lt;br /&gt;        pause;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Show the SQL statement that is produced by the query.&lt;br /&gt;    info (qr.query().dataSourceNo(1).toString());&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;Note: The status method provides the function for each range.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7711791531010244850?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7711791531010244850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7711791531010244850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7711791531010244850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7711791531010244850'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2009/04/sample-x-code-that-you-can-use-to.html' title='Sample X++ code that you can use to disable or to hide a query range in Microsoft Axapta'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-1762881776124062039</id><published>2008-02-25T11:48:00.000+05:00</published><updated>2008-02-25T12:08:08.138+05:00</updated><title type='text'>Register User Controls and Custom Controls in Web.config</title><content type='html'>In previous versions of ASP.NET developers imported and used both custom server controls and user controls on a page by adding &lt;%@ Register %&gt; directives to the top of pages like so:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EYDPqbEDj4s/R8JpMCeBLOI/AAAAAAAAABI/J5L0_93x87c/s1600-h/untitled.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_EYDPqbEDj4s/R8JpMCeBLOI/AAAAAAAAABI/J5L0_93x87c/s400/untitled.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5170810977716874466" /&gt;&lt;/a&gt;&lt;br /&gt;Note that the first two register directives above are for user-controls (implemented in .ascx files), while the last is for a custom control compiled into an assembly .dll file.  Once registered developers could then declare these controls anywhere on the page using the tagprefix and tagnames configured.&lt;br /&gt;This works fine, but can be a pain to manage when you want to have controls used across lots of pages within your site (especially if you ever move your .ascx files and need to update all of the registration declarations.&lt;br /&gt;ASP.NET 2.0 makes control declarations much cleaner and easier to manage. Instead of duplicating them on all your pages, just declare them once within the new pages-&gt;controls section with the web.config file of your application:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EYDPqbEDj4s/R8JoRCeBLMI/AAAAAAAAAA4/St5x0_DhZBo/s1600-h/untitled1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_EYDPqbEDj4s/R8JoRCeBLMI/AAAAAAAAAA4/St5x0_DhZBo/s400/untitled1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5170809964104592578" /&gt;&lt;/a&gt;&lt;br /&gt;You can declare both user controls and compiled custom controls this way.  Both are fully supported by Visual Studio when you use this technique -- and both VS 2005 Web Site Projects and VS 2005 Web Application Projects support them (and show the controls in WYSIWYG mode in the designer as well as for field declarations in code-behind files).&lt;br /&gt;One thing to note above is the use of the "~" syntax with the user-controls.  For those of you not familiar with this notation, the "~" keyword in ASP.NET means "resolve from the application root path", and provides a good way to avoid adding "..\" syntax all over your code.  You will always want/need to use it when declaring user controls within web.config files since pages might be using the controls in different sub-directories - and so you always need to resolve paths from the application root to find the controls consistently.&lt;br /&gt;Once you register the controls within the web.config file, you can then just use the controls on any page, master-page or user control on your site like so (no registration directives required):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EYDPqbEDj4s/R8JosSeBLNI/AAAAAAAAABA/1h80Kxuj7H4/s1600-h/untitled2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_EYDPqbEDj4s/R8JosSeBLNI/AAAAAAAAABA/1h80Kxuj7H4/s400/untitled2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5170810432256027858" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-1762881776124062039?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/1762881776124062039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=1762881776124062039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1762881776124062039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/1762881776124062039'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2008/02/register-user-controls-and-custom.html' title='Register User Controls and Custom Controls in Web.config'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EYDPqbEDj4s/R8JpMCeBLOI/AAAAAAAAABI/J5L0_93x87c/s72-c/untitled.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-301350383611883142</id><published>2008-02-15T12:59:00.000+05:00</published><updated>2008-02-15T13:04:27.881+05:00</updated><title type='text'>Formatting GridView in ASP.NET 2.0</title><content type='html'>This is very great site for learning about GridView Control in ASP.NET 2.0.&lt;br /&gt;&lt;a href="http://www.obout.com/grid"&gt;http://www.obout.com/grid&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.obout.com/grid"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-301350383611883142?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/301350383611883142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=301350383611883142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/301350383611883142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/301350383611883142'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2008/02/formatting-gridview.html' title='Formatting GridView in ASP.NET 2.0'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-5557520655472281618</id><published>2007-09-10T12:17:00.000+05:00</published><updated>2007-09-10T12:19:13.069+05:00</updated><title type='text'>Issues concerning X++</title><content type='html'>This link will show you how to resolve compiler warnings in Axapta.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/x/"&gt;http://blogs.msdn.com/x/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-5557520655472281618?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/5557520655472281618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=5557520655472281618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5557520655472281618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/5557520655472281618'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2007/09/issues-concerning-x.html' title='Issues concerning X++'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-6336767205996453255</id><published>2007-09-06T12:32:00.000+05:00</published><updated>2007-09-06T12:33:24.159+05:00</updated><title type='text'>Dynamics AX Programming of Basic Methods of Tables</title><content type='html'>this is very nice link for basic level understanding&lt;br /&gt;&lt;a href="http://msdax.blogspot.com/2007/07/programming-of-basic-methods-of-tables.html"&gt;http://msdax.blogspot.com/2007/07/programming-of-basic-methods-of-tables.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-6336767205996453255?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/6336767205996453255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=6336767205996453255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6336767205996453255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/6336767205996453255'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2007/09/dynamics-ax-programming-of-basic.html' title='Dynamics AX Programming of Basic Methods of Tables'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-7447772318721772159</id><published>2007-09-04T11:33:00.000+05:00</published><updated>2007-09-04T14:13:28.323+05:00</updated><title type='text'>Code Coverage of Table Level Methods</title><content type='html'>In order to enable code coverage you have to follow some naming conventions or override a specific method on your test class:Naming convention: &lt;strong&gt;TableName + Test&lt;/strong&gt; or simply override the&lt;strong&gt; testsElementName()&lt;/strong&gt; method and returnthe name of your table.(also, override the &lt;strong&gt;testsElementType&lt;/strong&gt; and return &lt;strong&gt;UtilElementType::Table&lt;/strong&gt;;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-7447772318721772159?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/7447772318721772159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=7447772318721772159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7447772318721772159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/7447772318721772159'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2007/09/code-coverage-of-table-level-methods.html' title='Code Coverage of Table Level Methods'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-854188483279252653</id><published>2007-08-30T12:50:00.000+05:00</published><updated>2007-08-30T12:51:10.975+05:00</updated><title type='text'>Specifying empty date values</title><content type='html'>If you want to set a date field to an empty date or need to compare if a date field is empty, you can use the datenull() function. It is a method of the Global class and will simply return 01\01\1900.This leads to more things:&lt;br /&gt;&lt;br /&gt;You can write dates in Axapta X++ editor using backslashes, e.g. 14\04\2006&lt;br /&gt;An empty date in Axapta is specified as January 1st, 1900.&lt;br /&gt;You can use methods from the Global class without having to write "Global::". So, you can write "if date == datenull()" and you do not have to write "if date == Global::datenull()". This works with all the methods from the Global class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-854188483279252653?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/854188483279252653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=854188483279252653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/854188483279252653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/854188483279252653'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2007/08/specifying-empty-date-values.html' title='Specifying empty date values'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6816887795617080879.post-843529222299415059</id><published>2007-08-30T12:28:00.000+05:00</published><updated>2007-08-30T12:33:48.487+05:00</updated><title type='text'>Documenting business tasks</title><content type='html'>A beta-version of the task recorder is available for download from PartnerSource for registered partners of Microsoft Dynamic AX.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/photos/flemminglouwreimer/picture1034580.aspx" target="_blank"&gt;&lt;/a&gt;&lt;img id="BLOGGER_PHOTO_ID_5104392871251882450" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_EYDPqbEDj4s/RtZyRa0BMdI/AAAAAAAAAAM/F4Uq2DfGv9o/s320/untitled.bmp" border="0" /&gt; &lt;img id="BLOGGER_PHOTO_ID_5104393150424756706" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_EYDPqbEDj4s/RtZyhq0BMeI/AAAAAAAAAAU/r2RFRchMzlU/s320/untitled1.bmp" border="0" /&gt; &lt;img id="BLOGGER_PHOTO_ID_5104393382352990706" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_EYDPqbEDj4s/RtZyvK0BMfI/AAAAAAAAAAc/_bE31U05vxY/s320/untitled2.bmp" border="0" /&gt;&lt;br /&gt;The tool is useful in quit many scenarios and we would love feedback from our partners on the usage of it. It can be installed on top of Microsoft Dynamics AX 4.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6816887795617080879-843529222299415059?l=mafsarkhan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mafsarkhan.blogspot.com/feeds/843529222299415059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6816887795617080879&amp;postID=843529222299415059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/843529222299415059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6816887795617080879/posts/default/843529222299415059'/><link rel='alternate' type='text/html' href='http://mafsarkhan.blogspot.com/2007/08/documenting-business-tasks.html' title='Documenting business tasks'/><author><name>Muhammad Afsar Khan - MS Dynamics AX blog</name><uri>http://www.blogger.com/profile/17303592407175288827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp0.blogger.com/_EYDPqbEDj4s/R7QsHSeBLKI/AAAAAAAAAAo/OC_YU1HitkA/S220/afs3.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EYDPqbEDj4s/RtZyRa0BMdI/AAAAAAAAAAM/F4Uq2DfGv9o/s72-c/untitled.bmp' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
