<?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-8059654106901353803</id><updated>2012-02-03T18:14:23.730+08:00</updated><category term='X++'/><category term='Best Practice'/><category term='EP'/><category term='WebServices'/><category term='CAL'/><category term='iPhone'/><category term='SQL'/><category term='Tip'/><category term='General'/><category term='RTC'/><category term='BOF'/><category term='Powershell'/><category term='HowTo'/><category term='Links'/><category term='SSRS'/><category term='NAV'/><category term='Virtualbox'/><category term='Workflow'/><category term='AX2012'/><category term='AX'/><category term='HyperV'/><category term='Job'/><title type='text'>Dynamics NAVAX</title><subtitle type='html'>All things Microsoft Dynamics AX</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-7035923855493366165</id><published>2012-02-03T17:38:00.001+08:00</published><updated>2012-02-03T17:40:03.247+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>Shortcuts [AX 2012]</title><content type='html'>Below are a few shortcuts I use when setting up new environments.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Client shortcut&lt;/b&gt;&lt;br /&gt;"C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin\Ax32.exe" "C:\AxClientConfig\MyInstance_isv.axc"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Client shortcut into development&lt;/b&gt;&lt;br /&gt;"C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin\Ax32.exe" "C:\AxClientConfig\MyInstance_isv.axc" -development&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Visual studio shortcut&lt;/b&gt;&lt;br /&gt;"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /AxConfig "C:\AxClientConfig\MyInstance_isv.axc"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-7035923855493366165?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/7035923855493366165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=7035923855493366165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7035923855493366165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7035923855493366165'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/02/shortcuts-ax-2012.html' title='Shortcuts [AX 2012]'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5024256120639807601</id><published>2012-02-02T07:28:00.000+08:00</published><updated>2012-02-02T07:34:34.291+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>Common used commands for model move [AX 2012]</title><content type='html'>These are common commands I use to move models on internal environments.&lt;br /&gt;Place these in a batch file and name accordingly. Then all you have to do is run them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Delete isv layer&lt;/b&gt;&lt;br /&gt;"%ProgramFiles%\Microsoft Dynamics AX\60\ManagementUtilities\AxUtil" delete /layer:isv /db:TestDb /s:SQLSERVER&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Delete usr layer&lt;/b&gt;&lt;br /&gt;"%ProgramFiles%\Microsoft Dynamics AX\60\ManagementUtilities\AxUtil" delete /layer:usr /db:TestDb&amp;nbsp;&amp;nbsp;/s:SQLSERVER&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Export model&lt;/b&gt;&lt;br /&gt;"%ProgramFiles%\Microsoft Dynamics AX\60\ManagementUtilities\AxUtil" export /model:"MyModel" /file:"\\sharedfolder\mymodel.axmodel" /db:DevDb /s:SQLSERVER&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Import model&lt;/b&gt;&lt;br /&gt;"%ProgramFiles%\Microsoft Dynamics AX\60\ManagementUtilities\AxUtil" import /file:"\\sharedfolder\mymodel.axmodel" /db:TestDb&amp;nbsp;/s:SQLSERVER&lt;br /&gt;PAUSE&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PAUSE is in there to allow you to see the results if any.&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/hh456294.aspx"&gt;http://technet.microsoft.com/en-us/library/hh456294.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh352314.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh352314.aspx&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/8059654106901353803-5024256120639807601?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5024256120639807601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5024256120639807601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5024256120639807601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5024256120639807601'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/02/common-used-commands-for-model-move-ax.html' title='Common used commands for model move [AX 2012]'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-52829354278412037</id><published>2012-01-23T11:33:00.000+08:00</published><updated>2012-01-23T11:33:21.084+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practice'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>ManagedBy property on the security node in the AOT [AX 2012]</title><content type='html'>I had recently asked this question to Microsoft and thought I should share.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Question:&lt;/b&gt;&lt;br /&gt;I am trying to make sense of the security AOT property ManagedBy.&lt;br /&gt;I can understand if I have to put something there to indicate it is being managed manually but why does best practice accept only the two values (that I found):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Manual&lt;/li&gt;&lt;li&gt;CodeAnalysis&lt;img alt="" height="199" src="http://social.microsoft.com/Forums/getfile/55616/" width="671" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I have searched on msdn for more help but all it says is:&lt;br /&gt;&lt;div&gt;&lt;table style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-image: initial; border-left-color: rgb(187, 187, 187); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: solid; border-top-width: 1px; color: black; font: normal normal normal 13px/normal 'Segoe UI', Verdana, Arial; text-align: left; width: 1026px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="background-color: white; border: 1px solid rgb(187, 187, 187); line-height: 18px; margin: 1px; padding: 9px 4px;"&gt;ManagedBy&lt;/td&gt;&lt;td style="background-color: white; border: 1px solid rgb(187, 187, 187); line-height: 18px; margin: 1px; padding: 9px 4px;"&gt;Optional&lt;/td&gt;&lt;td style="background-color: white; border: 1px solid rgb(187, 187, 187); line-height: 18px; margin: 1px; padding: 9px 4px;"&gt;This property is for use by automation tools.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg731858.aspx" rel="nofollow"&gt;http://msdn.microsoft.com/en-us/library/gg731858.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Answer:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This property is used by one of our automation tools internally. We were using it simply so that we could write automations to help the feature teams to make sure they had all of the new security aspects covered for their objects.&lt;br /&gt;It could be used by a custom tool that checks the objects to make sure that all the&amp;nbsp;security&amp;nbsp;is implemented correctly for the objects by checking if the object should be managed manually or automatically.&lt;br /&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/8059654106901353803-52829354278412037?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/52829354278412037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=52829354278412037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/52829354278412037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/52829354278412037'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/01/managedby-property-on-security-node-in.html' title='ManagedBy property on the security node in the AOT [AX 2012]'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-607542689567432704</id><published>2012-01-22T17:44:00.003+08:00</published><updated>2012-01-22T17:47:49.760+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BOF'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>Business Operation Framework (BOF) [AX 2012]</title><content type='html'>&lt;br /&gt;The Business Operation Framework (BOF) lets you run services on Microsoft Dynamics AX using the Windows Communication Foundation (WCF) framework. The BOF uses an MVC programming pattern.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;What is a Model View Controller (MVC) Framework?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;MVC is a framework methodology that divides an application's implementation into three component roles: models, views, and controllers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Model:&lt;/b&gt;&amp;nbsp;The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).&lt;/li&gt;&lt;li&gt;&lt;b&gt;View:&lt;/b&gt; The view manages the display of information.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Controller:&lt;/b&gt;&amp;nbsp;The controller interprets the mouse and keyboard inputs from the user, informing the model and/or the view to change as appropriate.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1eTwT3l-lbA/TxvayBXXWmI/AAAAAAAAAFM/7d7iQcspMog/s1600/2012-01-22_1745.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1eTwT3l-lbA/TxvayBXXWmI/AAAAAAAAAFM/7d7iQcspMog/s1600/2012-01-22_1745.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Features of the Business Operation Framework&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allows menu-driven execution or batch execution of services.&lt;/li&gt;&lt;li&gt;Calls services in synchronous or asynchronous mode.&lt;/li&gt;&lt;li&gt;Automatically creates a customizable UI based on the data contract.&lt;/li&gt;&lt;li&gt;Encapsulates code to operate on the appropriate tier (prompting on the client tier, and business logic on the server tier).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Building blocks Business Operation Framework&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Lets work by example. Standard doesnt have a great deal of examples but I found one that is clean to read.&lt;br /&gt;Lets look at the &lt;b&gt;SalesQuotationMassCreate&lt;/b&gt; function.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qHKymJ-Y1tw/TxvaU752mDI/AAAAAAAAAFE/jnUcpgzJVsE/s1600/2012-01-22_1641.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-qHKymJ-Y1tw/TxvaU752mDI/AAAAAAAAAFE/jnUcpgzJVsE/s1600/2012-01-22_1641.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;class SalesQuotationMassCreate extends SysOperationServiceBase&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Main operation/process that runs in WCF. Takes the Contract as a parameter and does its operation.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;class SalesQuotationMassCreateContract implements SysOperationValidatable&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Contains the parm methods and validation. This is the object that is passed to the main operation class.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;class SalesQuotationMassCreateController extends SysOperationServiceController&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Entry point to initialize the query&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;class SalesQuotationMassCreateUIBuilder extends SysOperationAutomaticUIBuilder&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This class is not required but used for overriding dialog behavior. eg. You can enable/disable fields dynamically.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Some advantages&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Runs faster&lt;/li&gt;&lt;li&gt;Clean separation of of processing code, the model and the UI.&lt;/li&gt;&lt;li&gt;Can expose main operation as a web service&lt;/li&gt;&lt;li&gt;Consistent with programming language when developing SSRS reports, AIF web services, or batch jobs&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Reference:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;http://en.wikipedia.org/wiki/Model-view-controller&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff649643.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff649643.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg862488.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg862488.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-607542689567432704?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/607542689567432704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=607542689567432704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/607542689567432704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/607542689567432704'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/01/business-operation-framework-bof-ax.html' title='Business Operation Framework (BOF) [AX 2012]'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1eTwT3l-lbA/TxvayBXXWmI/AAAAAAAAAFM/7d7iQcspMog/s72-c/2012-01-22_1745.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-107290072274125348</id><published>2012-01-19T13:36:00.000+08:00</published><updated>2012-01-19T13:36:22.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>Loop through record from data source [AX 2012]</title><content type='html'>&lt;br /&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;"&gt;&lt;span style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;These are simple code snippets to loop through a record from a data source.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;&lt;b&gt;Using a while loop&lt;/b&gt;&lt;/span&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;div align="left"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; salesLine_ds&amp;nbsp;&amp;nbsp;&amp;nbsp; = _salesLine.dataSource();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; localSalesLine&amp;nbsp; = salesLine_ds.getFirst(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;)&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;SalesLine;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: 11px;"&gt;localSalesLine&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: 11px;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;(localSalesLine)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: 11px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: 11px; text-align: -webkit-left;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: green; font-family: Consolas; font-size: 11px;"&gt;&lt;i&gt;//Do your thing&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localSalesLine = salesLine_ds.getNext()&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;SalesLine;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;b style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;Using a for loop&lt;/b&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;div align="left"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma; font-size: small; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp; &amp;nbsp; salesLine_ds = _salesLine.dataSource();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;(localSalesLine = salesLine_ds.getFirst(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;) ? salesLine_ds.getFirst(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: darkblue; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;) : salesLine_ds.cursor();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localSalesLine;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localSalesLine = salesLine_ds.getNext())&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" style="font-size: 11px;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&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 style="color: green; font-family: Consolas; font-size: xx-small;"&gt;&lt;span style="font-size: 8pt;"&gt;&lt;i&gt;//Do your thing&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-family: Tahoma;"&gt;&lt;span style="color: #010101; font-family: Consolas; font-size: 11px; text-align: -webkit-left;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;div align="left" style="color: #010101; font-size: 11px;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;div align="left" style="color: #010101; font-size: 11px;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;b&gt;Using MultiSelectionHelper class (blogged previously)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;Using MultiSelectionHelper class (blogged previously)&lt;/b&gt;&lt;/div&gt;&lt;div align="left" style="color: #010101; font-size: 11px;"&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; text-align: -webkit-auto;"&gt;&lt;span style="color: #010101; font-family: Consolas;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;b&gt;&lt;a href="http://dynamicsnavax.blogspot.com/2010/04/ax-multiselectionhelper.html"&gt;http://dynamicsnavax.blogspot.com/2010/04/ax-multiselectionhelper.html&lt;/a&gt;&lt;/b&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/8059654106901353803-107290072274125348?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/107290072274125348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=107290072274125348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/107290072274125348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/107290072274125348'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/01/loop-through-record-from-data-source-ax.html' title='Loop through record from data source [AX 2012]'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4972254775063032705</id><published>2012-01-12T07:37:00.000+08:00</published><updated>2012-01-12T07:37:44.455+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>The element does not have an origin value. This element must have a non-null origin value.</title><content type='html'>When you compile and you get this error in AX 2012.&lt;br /&gt;&lt;i&gt;"The element does not have an origin value. This element must have a non-null origin value."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Just restart your AOS. That should sort it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4972254775063032705?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4972254775063032705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4972254775063032705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4972254775063032705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4972254775063032705'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/01/element-does-not-have-origin-value-this.html' title='The element does not have an origin value. This element must have a non-null origin value.'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4344159559823723159</id><published>2012-01-04T15:50:00.002+08:00</published><updated>2012-01-05T09:16:16.482+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>Modify Microsoft Dynamics AX 2012 SSRS configuration files using PowerShell</title><content type='html'>This post is to highlight a pet project I have been working on. Working for a partner I frequently do new environment installations. AX 2012 allows you install multiple SSRS environments on the one machine but it can be tedious with the SSRS configuration file changes.&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/hh389762.aspx"&gt;http://technet.microsoft.com/en-us/library/hh389762.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have scripted the process and loaded on here&amp;nbsp;&lt;a href="http://dax2012ssrs.codeplex.com/"&gt;http://dax2012ssrs.codeplex.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4344159559823723159?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4344159559823723159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4344159559823723159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4344159559823723159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4344159559823723159'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2012/01/modify-microsoft-dynamics-ax-2012-ssrs.html' title='Modify Microsoft Dynamics AX 2012 SSRS configuration files using PowerShell'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-2970368002980024467</id><published>2011-11-02T06:51:00.001+08:00</published><updated>2011-11-02T06:51:24.888+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><category scheme='http://www.blogger.com/atom/ns#' term='AX2012'/><title type='text'>AX2012 - Install multiple instances of Reporting Services (SSRS) on the same computer scripted with powershell</title><content type='html'>&lt;div class="MsoNormal"&gt;I have been working on a side project to script &lt;span class="MsoHyperlink"&gt;&lt;a href="http://technet.microsoft.com/en-us/library/hh389760.aspx"&gt;Install multiple instances of Reporting Services on the same computer (for use with Microsoft Dynamics AX) [AX 2012]&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Most of the steps are straight forward but the &lt;a href="http://technet.microsoft.com/en-us/library/hh389762.aspx"&gt;Modify Reporting Services configuration files [AX 2012]&lt;/a&gt; is a little tedious.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I have scripted some of the steps. It is incomplete but I think it could be useful for our internal SSRS installs.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;I hope someone out there can contribute and we can share the load to complete it.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=8059654106901353803" title="Expand"&gt;&lt;span class="lwcollapsibleareatitle"&gt;&lt;b&gt;&lt;span style="color: #3f529c; font-family: 'Segoe UI', sans-serif; font-size: 15.5pt; text-decoration: none;"&gt;1) Modify the Report Manager Web.config file&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;(COMPLETE)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;link href="http://www.thecomplex.plus.com/styles/SyntaxHighlighter.css" rel="stylesheet" type="text/css"&gt;&lt;/link&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=8059654106901353803" title="Collapse"&gt;&lt;span class="lwcollapsibleareatitle"&gt;&lt;b&gt;&lt;span style="color: #3f529c; font-family: 'Segoe UI', sans-serif; font-size: 15.5pt; text-decoration: none;"&gt;2) Modify the report server RsReportServer.config file&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;(WORK IN PROGRESS)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;These have not been scripted - do them manually. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;I haven't managed to write a script to delete an element. &lt;rswindowsnegotiate&gt;&amp;nbsp;&lt;/rswindowsnegotiate&gt;&lt;/li&gt;For some reason XmlDocument does not find the empty element. For our internal environments, this is generally not set. 2. I haven't managed to add step 9  -&lt;reportdefinitioncustomization&gt;This is because it is not in the primary root element. A second root node is started half way through the config file.&lt;/reportdefinitioncustomization&gt;&lt;/ol&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=8059654106901353803" title="Collapse"&gt;&lt;span class="lwcollapsibleareatitle"&gt;&lt;b&gt;&lt;span style="color: #3f529c; font-family: 'Segoe UI', sans-serif; font-size: 15.5pt; text-decoration: none;"&gt;3) Modify the report server RsSrvPolicy.config file&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;(WORK IN PROGRESS)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;I haven't managed to get step 7 right. It adds the CodeGroup to the wrong node. I need to find the node by the attribute (I think may have to write a loop to do this).&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=8059654106901353803" title="Collapse"&gt;&lt;span class="lwcollapsibleareatitle"&gt;&lt;b&gt;&lt;span style="color: #3f529c; font-family: 'Segoe UI', sans-serif; font-size: 15.5pt; text-decoration: none;"&gt;4) Modify the report server Web.config file&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;(COMPLETE)&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If you get a message saying scripting is not allowed. Just start powershell - run as administrator. Then type the following&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Set-ExecutionPolicy Unrestricted&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Warning:&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This is in no way complete but a start. I will update when I have something.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="is_c" style="background-color: white; color: #61a6ec; cursor: pointer; font-family: 'Segoe UI', Tahoma, Verdana, Arial; font-size: 12px; line-height: 15px; text-decoration: none; vertical-align: middle; white-space: nowrap;"&gt;&lt;a class="fileAction" href="https://skydrive.live.com/?cid=2504ea2bc104b3d6&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=2504EA2BC104B3D6%21138#" style="background-color: white; color: #61a6ec; cursor: pointer; font-family: 'Segoe UI', Tahoma, Verdana, Arial; font-size: 12px; line-height: 15px; text-decoration: none; white-space: nowrap;"&gt;&lt;img alt="Powershell SSRS AX2012 Config" class="is_img" src="https://secure.wlxrs.com/$live.controls.images/is/invis.gif" style="background-image: url(https://secure.wlxrs.com/ejqsqMQpCk!!mjWuhlSz!A/images/skydrive_pc_strip_8_ltr.png); background-position: -237px -200px; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; height: 16px; width: 16px;" title="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="https://skydrive.live.com/?cid=2504ea2bc104b3d6&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=2504EA2BC104B3D6%21138#"&gt;Powershell SSRS AX2012 Config&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/8059654106901353803-2970368002980024467?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/2970368002980024467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=2970368002980024467' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2970368002980024467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2970368002980024467'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/11/ax2012-install-multiple-instances-of.html' title='AX2012 - Install multiple instances of Reporting Services (SSRS) on the same computer scripted with powershell'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-3628301011223186880</id><published>2011-07-22T11:31:00.000+08:00</published><updated>2011-07-22T11:31:40.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>SQL Server Data Compression and Microsoft Dynamics</title><content type='html'>Recently found this through the NAV team blog.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/nav/archive/2011/07/22/sql-server-data-compression-and-microsoft-dynamics.aspx"&gt;http://blogs.msdn.com/b/nav/archive/2011/07/22/sql-server-data-compression-and-microsoft-dynamics.aspx&lt;/a&gt;&lt;br /&gt;Release is available here:&amp;nbsp;&lt;a href="http://archive.msdn.microsoft.com/MSSDCTD"&gt;http://archive.msdn.microsoft.com/MSSDCTD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am going to play with it and try to post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-3628301011223186880?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/3628301011223186880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=3628301011223186880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3628301011223186880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3628301011223186880'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/07/sql-server-data-compression-and.html' title='SQL Server Data Compression and Microsoft Dynamics'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-3738175676265882352</id><published>2011-07-05T20:54:00.002+08:00</published><updated>2011-07-05T21:21:11.213+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='HyperV'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>How to Dual Boot from a VHD</title><content type='html'>&lt;div&gt;Previously I wrote a step by step guide on &lt;a href="http://dynamicsnavax.blogspot.com/2011/04/how-to-run-ax2012-hyperv-on-virtualbox.html"&gt;how you can run AX2012 HyperV&lt;/a&gt; on your local machine.&lt;br /&gt;Today a friend of mine suggested an alternative way to run it. With the new laptops that have hardware virtualization enabled, you can set up a boot from VHD. I won't write a step by step for this but you can google and find a lot of information.&lt;br /&gt;You can use BCDEdit&amp;nbsp;&lt;/div&gt;&lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/how-to-boot-from-a-vhd.aspx"&gt;How to Boot from a VHD - TechNet Articles - Home - TechNet Wiki&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tellingmachine.com/post/How-to-add-a-Windows-7-Virtual-Hard-Disk-to-a-physical-Windows-7-machine-and-make-it-dual-boot.aspx"&gt;Another link&lt;/a&gt;&lt;br /&gt;&lt;div&gt;or Windows2008 Install disc&lt;br /&gt;&lt;a href="http://www.microsoftnow.com/2009/11/dual-booting-windows-server-2008-r2.html"&gt;Dual booting Windows Server 2008 R2 with Windows 7 using VHD booting | microsoftNOW&lt;/a&gt;&lt;br /&gt;to set this up.&lt;br /&gt;&lt;br /&gt;Now the only limitation I can see is the AX2012 image comes with 3 VHDs but this boot from VHD allows you to select a single VHD (OS VHD). What I have done to come around this is setup the boot for the 1st VHD. Then attach the other 2 VHDs as disks in "Computer Management"-&amp;gt; "Disk Management".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Xg0qOtt0F6Q/ThMIWvgkK-I/AAAAAAAAADQ/LqC33RAU_1o/s1600/2011-07-05_2048.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Xg0qOtt0F6Q/ThMIWvgkK-I/AAAAAAAAADQ/LqC33RAU_1o/s1600/2011-07-05_2048.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;Start your services after you have attached. This seems to work. Only issue I found is, I have to attach the VHD every time I boot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-3738175676265882352?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/3738175676265882352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=3738175676265882352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3738175676265882352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3738175676265882352'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/07/how-to-dual-boot-from-vhd.html' title='How to Dual Boot from a VHD'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Xg0qOtt0F6Q/ThMIWvgkK-I/AAAAAAAAADQ/LqC33RAU_1o/s72-c/2011-07-05_2048.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6417500466506982708</id><published>2011-06-30T16:37:00.000+08:00</published><updated>2011-06-30T16:37:13.921+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>Workflow error: "User 123 has no access to menu item PurchReqTable"</title><content type='html'>I recently was helping a client set their security and I found a weird one. The workflow would stop with an error "User 123 has no access to menu item PurchReqTable". This even though they already had access to all the workflow menu items and the purchase requisition form.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dMy-nY5lG-Y/Tgw1U3iMr6I/AAAAAAAAADI/MN0q19w14-g/s1600/2011-06-30_1633.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-dMy-nY5lG-Y/Tgw1U3iMr6I/AAAAAAAAADI/MN0q19w14-g/s1600/2011-06-30_1633.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;The key that is required is the Miscellaneous key.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gzgjaGVAm3Q/Tgw1plUqVSI/AAAAAAAAADM/J9VZJdzFyVw/s1600/2011-06-30_1630.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-gzgjaGVAm3Q/Tgw1plUqVSI/AAAAAAAAADM/J9VZJdzFyVw/s1600/2011-06-30_1630.png" /&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/8059654106901353803-6417500466506982708?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6417500466506982708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6417500466506982708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6417500466506982708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6417500466506982708'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/06/workflow-error-user-123-has-no-access.html' title='Workflow error: &quot;User 123 has no access to menu item PurchReqTable&quot;'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dMy-nY5lG-Y/Tgw1U3iMr6I/AAAAAAAAADI/MN0q19w14-g/s72-c/2011-06-30_1633.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4746434716693350546</id><published>2011-06-23T18:47:00.000+08:00</published><updated>2011-06-23T18:47:42.978+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>Microsoft Dynamics AX 2009 on iPhone</title><content type='html'>I am passionate about this topic as I have been working on it for a while with the team in my company. We have developed an iPhone solution for Microsoft Dynamics AX which allows users to do the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Workflow approval - View and action workflow. eg. Approve/Reject&amp;nbsp;&lt;/li&gt;&lt;li&gt;Alerts - Receive/view notifications&amp;nbsp;&lt;/li&gt;&lt;li&gt;Entities - Browse records in AX - this is extendable to allow you view any record in AX. We have basic records like Customers, Items etc by default but this is extendable&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Here are some screenshots:&lt;/b&gt;&lt;br /&gt;Main Menu on the iPhone&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jkCYzpkyQAE/TgMXbd1-5gI/AAAAAAAAACs/eGyjE5YBt88/s1600/MobileDAXMainMenu.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="166" src="http://1.bp.blogspot.com/-jkCYzpkyQAE/TgMXbd1-5gI/AAAAAAAAACs/eGyjE5YBt88/s320/MobileDAXMainMenu.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Alerts on the iPhone&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zqbqENMQfjI/TgMYELwfa0I/AAAAAAAAADE/a27WcEI1wIA/s1600/MobileDAXAlerts.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="171" src="http://1.bp.blogspot.com/-zqbqENMQfjI/TgMYELwfa0I/AAAAAAAAADE/a27WcEI1wIA/s320/MobileDAXAlerts.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;On the iPad&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-n3zXgFLOVR4/TgMXmvEjzSI/AAAAAAAAAC8/oUTGwTAYFzs/s1600/MobileDAXAlertsIPAD.jpg.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="246" width="320" src="http://3.bp.blogspot.com/-n3zXgFLOVR4/TgMXmvEjzSI/AAAAAAAAAC8/oUTGwTAYFzs/s320/MobileDAXAlertsIPAD.jpg.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Finally, here is a video I have uploaded to youtube. Instead of showing you an emulator or just screenshots. This video is straight of my iPhone. Its not the best video quality but hope it gives you the concept of this mobile solution.&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/ThHL4RNEmj4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a link to my companies website:&lt;br /&gt;&lt;a href="http://www.eclipsecomputing.com.au/Services/EclipseMobility.aspx"&gt;http://www.eclipsecomputing.com.au/Services/EclipseMobility.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4746434716693350546?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4746434716693350546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4746434716693350546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4746434716693350546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4746434716693350546'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/06/microsoft-dynamics-ax-2009-on-iphone.html' title='Microsoft Dynamics AX 2009 on iPhone'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jkCYzpkyQAE/TgMXbd1-5gI/AAAAAAAAACs/eGyjE5YBt88/s72-c/MobileDAXMainMenu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8548952910926459490</id><published>2011-06-21T13:19:00.001+08:00</published><updated>2011-06-21T13:21:41.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='WebServices'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>Online (Bing) translator for AX using a shortcut key</title><content type='html'>Keeping in theme with the last post, I will talk about another simple use for web services in AX.&lt;br /&gt;I will use &lt;a href="http://www.microsofttranslator.com/"&gt;Microsoft (Bing) Translator&lt;/a&gt; to automatically translate fields with just a shortcut key (in this example I will take over the Ctrl+Z shortcut).&lt;br /&gt;&lt;br /&gt;In \Classes\SysSetupFormRun add a new method. Copy and paste below. Make sure to replace the API ID with your own. Sign up to &lt;a href="http://www.microsoft.com/web/post/using-the-free-bing-translation-apis"&gt;Microsoft API&lt;/a&gt;.&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;Public static server void translate(str _text = "")&lt;br /&gt;{&lt;br /&gt;//ar,bg,zh-CHS,zh-CHT,cs,da,nl,en,et,fi,fr,de,el,ht,he,hu,id,it,ja,ko,lv,lt,no,pl,pt,ro,ru,sk,sl,es,sv,th,tr,uk,vi&lt;br /&gt;//Arabic Bulgarian Chinese Simplified Chinese Traditional Czech Danish Dutch English Estonian Finnish French&lt;br /&gt;//German Greek Haitian Creole Hebrew Hungarian Indonesian Italian Japanese Korean Latvian Lithuanian&lt;br /&gt;//Norwegian Polish Portuguese Romanian Russian Slovak Slovenian Spanish Swedish Thai Turkish Ukrainian Vietnamese&lt;br /&gt;&lt;br /&gt;    str uri;&lt;br /&gt;    str appId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; //Replace with your API ID&lt;br /&gt;    str fromLanguage="en", ToLanguage="fr"; //Change the language you want to change from/to&lt;br /&gt;    str ret = "";&lt;br /&gt;&lt;br /&gt;    System.Net.HttpWebRequest   httpRequest  = null;&lt;br /&gt;    System.Net.HttpWebResponse  httpResponse = null;&lt;br /&gt;    CLRObject                   clro         = null;&lt;br /&gt;    System.IO.Stream            stream       = null;&lt;br /&gt;    System.IO.StreamReader      streamReader = null;&lt;br /&gt;    XmlTextReader               xmlTextReader ;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=" + appId +&lt;br /&gt;        "&amp;amp;text=" + _text + "&amp;amp;from=" + fromLanguage + "&amp;amp;to=" + toLanguage;&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        new InteropPermission(InteropKind::ClrInterop).assert();&lt;br /&gt;        clro         = System.Net.WebRequest::Create(uri);&lt;br /&gt;        httpRequest  = clro;&lt;br /&gt;        httpResponse = httpRequest.GetResponse();&lt;br /&gt;        stream = httpResponse.GetResponseStream();&lt;br /&gt;        streamReader = new System.IO.StreamReader(stream);&lt;br /&gt;        ret = streamReader.ReadToEnd();&lt;br /&gt;&lt;br /&gt;        xmlTextReader = XmlTextReader::newXml(ret, true) ;&lt;br /&gt;&lt;br /&gt;        while(xmlTextReader.read())&lt;br /&gt;        {&lt;br /&gt;            switch (xmlTextReader.NodeType())&lt;br /&gt;            {&lt;br /&gt;                case XmlNodeType::Text: //Display the text in each element.&lt;br /&gt;                    ret = xmlTextReader.Value();&lt;br /&gt;                    break;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        CodeAccessPermission::revertAssert();&lt;br /&gt;    }&lt;br /&gt;    catch(Exception::CLRError)&lt;br /&gt;    {&lt;br /&gt;        throw error(AifUtil::getClrErrorMessage());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    info(ret);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now the second part is to trap shortcut keys. This is done in the same class \Classes\SysSetupFormRun.&lt;br /&gt;Modify the task() method by adding the following code:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public int task(int _p1)&lt;br /&gt;{&lt;br /&gt;    #task&lt;br /&gt;    FormDataSource formDataSource;&lt;br /&gt;&lt;br /&gt;    int ret;&lt;br /&gt;&lt;br /&gt;    // &amp;gt;&amp;gt; Translate string&lt;br /&gt;    // Munib - 2010-12-28&lt;br /&gt;    FormControl fc;&lt;br /&gt;    formStringControl fsc;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    if (_p1 == 769) //Ctrl + Z&lt;br /&gt;    {&lt;br /&gt;        fc = this.selectedControl();&lt;br /&gt;        formDataSource =  this.objectSet();&lt;br /&gt;&lt;br /&gt;        if(fc &amp;amp;&amp;amp; formDataSource)&lt;br /&gt;        {&lt;br /&gt;            fsc    = fc;&lt;br /&gt;&lt;br /&gt;            if(fsc.dataField() &amp;amp;&amp;amp; formDataSource.table())&lt;br /&gt;            {&lt;br /&gt;                if (fsc.valueStr())&lt;br /&gt;                {&lt;br /&gt;                    SysSetupFormRun::ecl_translate(fsc.valueStr());&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    // &amp;lt;&amp;lt; Translate string&lt;br /&gt;&lt;br /&gt;    if (_p1 == #taskFilter)&lt;br /&gt;    {&lt;br /&gt;        formDataSource = this.objectSet();&lt;br /&gt;        if (formDataSource &amp;amp;&amp;amp;&lt;br /&gt;            formDataSource.queryRun() &amp;amp;&amp;amp;&lt;br /&gt;            formDataSource.queryRun().args() &amp;amp;&amp;amp;&lt;br /&gt;            !formDataSource.queryRun().args().caller())&lt;br /&gt;        {&lt;br /&gt;            formDataSource.queryRun().args().caller(this);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //info(strfmt("%1=%2",_p1,#taskFilter));&lt;br /&gt;    //shift + F3   - 4443&lt;br /&gt;    //Shift + Down - 1296&lt;br /&gt;    ret = super(_p1);&lt;br /&gt;&lt;br /&gt;    return ret;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Final result looks like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-diuvtNXZTIo/TgAoQ2s6N7I/AAAAAAAAACk/bMXHih8vbik/s1600/2011-06-21_1259.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://4.bp.blogspot.com/-diuvtNXZTIo/TgAoQ2s6N7I/AAAAAAAAACk/bMXHih8vbik/s400/2011-06-21_1259.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We could be smart and make it parameter driven with the API ID, from/to language. This example is just to illustrate how simple it is to use web services in your project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8548952910926459490?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8548952910926459490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8548952910926459490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8548952910926459490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8548952910926459490'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/06/online-bing-translator-for-ax-using.html' title='Online (Bing) translator for AX using a shortcut key'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-diuvtNXZTIo/TgAoQ2s6N7I/AAAAAAAAACk/bMXHih8vbik/s72-c/2011-06-21_1259.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-7863395723415895745</id><published>2011-06-20T14:14:00.000+08:00</published><updated>2011-06-20T14:14:57.796+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='WebServices'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>Update exchange rate using Yahoo Web Service</title><content type='html'>In this example I am using &lt;a href="http://finance.yahoo.com/currency-converter"&gt;Yahoo's online currency converter&lt;/a&gt; to update the exchange rates table. An idea would be to put this code in a batch class, which you can schedule to run daily.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;static void YahooCurrencyUpdate(Args _args)&lt;br /&gt;{&lt;br /&gt;    Currency                    currency;&lt;br /&gt;    ExchRates                   exchRates;&lt;br /&gt;    str                         uri;&lt;br /&gt;    str                         exchRate = "";&lt;br /&gt;    str                         fromCurrency, toCurrency;&lt;br /&gt;&lt;br /&gt;    System.Net.HttpWebRequest   httpRequest  = null;&lt;br /&gt;    System.Net.HttpWebResponse  httpResponse = null;&lt;br /&gt;    CLRObject                   clro         = null;&lt;br /&gt;    System.IO.Stream            stream       = null;&lt;br /&gt;    System.IO.StreamReader      streamReader = null;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    while select currency&lt;br /&gt;    {&lt;br /&gt;        fromCurrency    = CompanyInfo::find().CurrencyCode;&lt;br /&gt;        toCurrency      = currency.CurrencyCode;&lt;br /&gt;&lt;br /&gt;        uri = "http://finance.yahoo.com/d/quotes.csv?e=.csv&amp;amp;f=l1&amp;amp;s=" + fromCurrency + toCurrency + "=X";&lt;br /&gt;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            new InteropPermission(InteropKind::ClrInterop).assert();&lt;br /&gt;            clro         = System.Net.WebRequest::Create(uri);&lt;br /&gt;            httpRequest  = clro;&lt;br /&gt;            httpResponse = httpRequest.GetResponse();&lt;br /&gt;            stream = httpResponse.GetResponseStream();&lt;br /&gt;            streamReader = new System.IO.StreamReader(stream);&lt;br /&gt;            exchRate = streamReader.ReadToEnd();&lt;br /&gt;            info(exchRate);&lt;br /&gt;&lt;br /&gt;            if (str2num(exchRate) &amp;gt; 0)&lt;br /&gt;            {&lt;br /&gt;                exchRates.initValue();&lt;br /&gt;                exchRates.CurrencyCode = toCurrency;&lt;br /&gt;                exchRates.FromDate = systemdateget();&lt;br /&gt;                exchRates.editExchRate(true, str2num(exchRate) * 100);&lt;br /&gt;                exchRates.insert();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            CodeAccessPermission::revertAssert();&lt;br /&gt;        }&lt;br /&gt;        catch(Exception::CLRError)&lt;br /&gt;        {&lt;br /&gt;            throw error(AifUtil::getClrErrorMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Additional information:&lt;/b&gt;&lt;br /&gt;Microsoft provides a simple example on how to consume a web service. In their example they take a currency converter too.&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ef3a50d2-61c8-4ffc-bce8-2caf038f98cd&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=ef3a50d2-61c8-4ffc-bce8-2caf038f98cd&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;The Microsoft whitepaper was written to illustrate on how to consume web services using references. &lt;br /&gt;&lt;br /&gt;There are a lot of online services that provide exchange rates and methods to consume. Yahoo provides the days rates via the web services but not historical rates. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other online services:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.thomsonreuters.com/"&gt;www.thomsonreuters.com&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://www.oanda.com/"&gt;www.oanda.com&lt;/a&gt;,&lt;br /&gt;&lt;a href="http://www.xe.com/"&gt;www.xe.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-7863395723415895745?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/7863395723415895745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=7863395723415895745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7863395723415895745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7863395723415895745'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/06/update-exchange-rate-using-yahoo-web.html' title='Update exchange rate using Yahoo Web Service'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4522445431666390352</id><published>2011-06-06T18:02:00.000+08:00</published><updated>2011-06-06T18:02:24.620+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HyperV'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>How to run AX2012 HyperV on Virtualbox (Hardware Virtualization)</title><content type='html'>In my last post "&lt;a href="http://dynamicsnavax.blogspot.com/2011/04/how-to-run-ax2012-hyperv-on-virtualbox.html"&gt;How to run AX2012 HyperV on Virtualbox (Step by step guide)&lt;/a&gt;" I wrote how you can run a HyperV image using Virtualbox.&lt;br /&gt;If these steps don't work for you, there are a few things to check:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;1. Mount the vhd disks using IDE controllers. Not SATA, which is the VirtualBox default if you use the wizard.&lt;br /&gt;Follow instruction below exactly– don’t make the mistake of clicking next -&amp;gt; next. Wizard will set it up as SATA controllers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Hardware virtualization must be turned on your PC/Laptop. This is a BIOS setting. Have a look at this link as it may assist.&lt;br /&gt;&lt;a href="http://www.microsoft.com/windows/virtual-pc/support/configure-bios.aspx"&gt;http://www.microsoft.com/windows/virtual-pc/support/configure-bios.aspx&lt;/a&gt;&lt;br /&gt;You may want to run&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0ee2a17f-8538-4619-8d1c-05d27e11adb2&amp;amp;displaylang=en"&gt;Microsoft® Hardware-Assisted Virtualization Detection Tool&lt;/a&gt;&amp;nbsp;to check if it is enabled. You should get a message like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7SCmBwHOUuc/Teylh_mtgKI/AAAAAAAAACU/mtfVMgbcN70/s1600/2011-06-06_1801.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://4.bp.blogspot.com/-7SCmBwHOUuc/Teylh_mtgKI/AAAAAAAAACU/mtfVMgbcN70/s320/2011-06-06_1801.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. Lastly, Hardware virtualization may not work if you computer has gone into hibernation or sleep mode. You have to reboot your machine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4522445431666390352?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4522445431666390352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4522445431666390352' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4522445431666390352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4522445431666390352'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/06/how-to-run-ax2012-hyperv-on-virtualbox.html' title='How to run AX2012 HyperV on Virtualbox (Hardware Virtualization)'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-7SCmBwHOUuc/Teylh_mtgKI/AAAAAAAAACU/mtfVMgbcN70/s72-c/2011-06-06_1801.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-203061217938202972</id><published>2011-04-24T09:40:00.001+08:00</published><updated>2011-10-07T14:47:34.414+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='HyperV'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>How to run AX2012 HyperV on Virtualbox (Step by step guide)</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;br /&gt;1. Go to &lt;a href="http://www.virtualbox.org/wiki/Downloads"&gt;http://www.virtualbox.org/wiki/Downloads&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Download virtual box and the extension pack.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-neFaDW9ZNBs/TbN83b3CboI/AAAAAAAAABo/Woha4J8-nWw/s1600/2011-04-24_0929.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-neFaDW9ZNBs/TbN83b3CboI/AAAAAAAAABo/Woha4J8-nWw/s1600/2011-04-24_0929.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;2. &lt;/span&gt;Once you have installed, create a new virtual machine. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RhjN8UaEID4/TbN9e7gX2mI/AAAAAAAAABs/d2U8_QLZg94/s1600/2011-04-01_1758.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RhjN8UaEID4/TbN9e7gX2mI/AAAAAAAAABs/d2U8_QLZg94/s1600/2011-04-01_1758.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;3. &lt;/span&gt;Select Windows 2008 64bit&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-f_MXfoeN5rc/TbN9lm5doFI/AAAAAAAAABw/XpFqv6M9aso/s1600/2011-04-01_1759.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-f_MXfoeN5rc/TbN9lm5doFI/AAAAAAAAABw/XpFqv6M9aso/s1600/2011-04-01_1759.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;4. &lt;/span&gt;Allocate a good portion of memory (4GB recommended)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TsQ6PDrbgXY/TbN9pwCZvII/AAAAAAAAAB0/HBK7bN9S3FM/s1600/2011-04-01_1759_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-TsQ6PDrbgXY/TbN9pwCZvII/AAAAAAAAAB0/HBK7bN9S3FM/s1600/2011-04-01_1759_001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;6. &lt;/span&gt;Un-tick the boot Hard Disk. Add disks manual after the wizard is finished.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nqnUOr4KQoo/TbN9wpmIbYI/AAAAAAAAAB4/8sb17imsAo4/s1600/2011-04-01_1756.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-nqnUOr4KQoo/TbN9wpmIbYI/AAAAAAAAAB4/8sb17imsAo4/s1600/2011-04-01_1756.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;6.  &lt;/span&gt;Click on your new virtual image settings &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OLlduwEEKFs/TbN91ZwY6HI/AAAAAAAAAB8/MKMTOTw58sM/s1600/2011-04-01_1819.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-OLlduwEEKFs/TbN91ZwY6HI/AAAAAAAAAB8/MKMTOTw58sM/s1600/2011-04-01_1819.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;7. &lt;/span&gt;Navigate to Storage&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle"&gt;Add hard disks by clicking the disk icon – then “Choose existing disk”&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle"&gt;Repeat this step for all 3 vhd files.&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 72pt; mso-add-space: auto; mso-list: l2 level1 lfo1; text-indent: -18pt;"&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;AX5-W8R2-01.vhd&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 72pt; mso-add-space: auto; mso-list: l2 level1 lfo1; text-indent: -18pt;"&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;AX5-W8R2-01_DB.vhd&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 72pt; mso-add-space: auto; mso-list: l2 level1 lfo1; text-indent: -18pt;"&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;AX5-W8R2-01_PF.vhd&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-D0tkSRn_ntA/TbN99NaHDjI/AAAAAAAAACA/HAZ5hZKXSCQ/s1600/2011-04-01_1757.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-D0tkSRn_ntA/TbN99NaHDjI/AAAAAAAAACA/HAZ5hZKXSCQ/s1600/2011-04-01_1757.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;8. &lt;/span&gt;After you have finished. Settings should look like this:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nJD1EiwkPuM/TbN-H-mN2dI/AAAAAAAAACE/ZuEyfRTlE70/s1600/2011-04-01_1820.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-nJD1EiwkPuM/TbN-H-mN2dI/AAAAAAAAACE/ZuEyfRTlE70/s1600/2011-04-01_1820.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;9. Start your image&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fjfvLVuPan0/TbN-Nr2uOhI/AAAAAAAAACI/eTAjfTdyENA/s1600/2011-04-01_1822.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-fjfvLVuPan0/TbN-Nr2uOhI/AAAAAAAAACI/eTAjfTdyENA/s1600/2011-04-01_1822.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&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-AU; 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;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;b&gt;Configure sharepoint&lt;/b&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;After you have managed to get it to start, there are a couple other things to be aware of:&lt;br /&gt;1. Start the AOS by going to the windows services and start manually&lt;br /&gt;2. All seems to work except for Enterprise Portal &lt;/div&gt;&lt;div class="MsoListParagraph"&gt;To fix this modify your hosts file &lt;i style="mso-bidi-font-style: normal;"&gt;“C:\Windows\System32\drivers\etc\Hosts”&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 36pt;"&gt;Open this file with notepad and add in the line&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="mso-tab-count: 1;"&gt; &lt;/span&gt; 127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sharepoint &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="mso-tab-count: 1;"&gt;&amp;nbsp;&lt;/span&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dynamicsax.contoso.com &lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: 36pt;"&gt;It should look like this:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-RdTT4ZXbFHg/TbN-nLePtZI/AAAAAAAAACM/ZrRFH6s4N64/s1600/2011-04-24_0937.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-RdTT4ZXbFHg/TbN-nLePtZI/AAAAAAAAACM/ZrRFH6s4N64/s1600/2011-04-24_0937.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&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;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When you run a report - it will be slow on first run. Don't kill it; leave it for a few minutes. Mine took ~4minutes to run first time. After that, it is very responsive. Standard SSRS caching.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 07-10-2011:&lt;/strong&gt;&lt;br /&gt;RTM version of the image uses&lt;br /&gt;127.0.0.1              dynamicsax.contoso.com&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3BHn4pRZj4g/To6fnYb--rI/AAAAAAAAAEQ/Njr7nqEmmQc/s1600/2011-10-07_1302.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-3BHn4pRZj4g/To6fnYb--rI/AAAAAAAAAEQ/Njr7nqEmmQc/s1600/2011-10-07_1302.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Enjoy.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-203061217938202972?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/203061217938202972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=203061217938202972' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/203061217938202972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/203061217938202972'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/04/how-to-run-ax2012-hyperv-on-virtualbox.html' title='How to run AX2012 HyperV on Virtualbox (Step by step guide)'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-neFaDW9ZNBs/TbN83b3CboI/AAAAAAAAABo/Woha4J8-nWw/s72-c/2011-04-24_0929.png' height='72' width='72'/><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4310676040760507833</id><published>2011-02-07T16:24:00.000+08:00</published><updated>2011-02-07T16:24:08.592+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Scan a document</title><content type='html'>There are a few ways to scan a document in AX.&lt;br /&gt;Best way is to use &lt;a href="http://msdn.microsoft.com/en-us/library/ms630368(v=vs.85).aspx"&gt;Windows Image Acquisition&lt;/a&gt; (WIA). This comes standard from Windows Vista and up. Previous version you had to download "&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=a332a77a-01b8-4de6-91c2-b7ea32537e29&amp;amp;displaylang=en"&gt;Windows Image Acquisition Automation Library v2.0&lt;/a&gt;" from Microsoft.&lt;br /&gt;&lt;br /&gt;Without getting into too much detail. Here is the code:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;static void scanDocument(Args _args)&lt;br /&gt;{&lt;br /&gt;    COM               commonDialog;&lt;br /&gt;    COM               imageFile;&lt;br /&gt;    str               wiaFormatJPEG     = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";&lt;br /&gt;    str               wiaFormatBMP      = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";&lt;br /&gt;    str               wiaFormatPNG      = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}";&lt;br /&gt;    str               wiaFormatGIF      = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}";&lt;br /&gt;    str               wiaFormatTIFF     = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}";&lt;br /&gt;    InteropPermission perm;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    // Set code access permission to help protect the use of the&lt;br /&gt;    // COM object.&lt;br /&gt;    perm = new InteropPermission(InteropKind::ComInterop);&lt;br /&gt;    if (perm == null)&lt;br /&gt;    {&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    // Permission scope starts here.&lt;br /&gt;    perm.assert();&lt;br /&gt;&lt;br /&gt;    commonDialog = new COM("WIA.CommonDialog");&lt;br /&gt;&lt;br /&gt;    if (commonDialog != null)&lt;br /&gt;    {&lt;br /&gt;        imageFile = commonDialog.ShowAcquireImage(&lt;br /&gt;                1,&lt;br /&gt;                1,&lt;br /&gt;                65536,&lt;br /&gt;                wiaFormatJPEG,&lt;br /&gt;                false,&lt;br /&gt;                true,&lt;br /&gt;                false);&lt;br /&gt;&lt;br /&gt;        if (WinAPI::fileExists("C:\\Temp\\c\\AXtestb.jpg"))&lt;br /&gt;        {&lt;br /&gt;            info('file exist');&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            imageFile.SaveFile("C:\\Temp\\c\\AXtestb.jpg");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Close code access permission scope.&lt;br /&gt;    CodeAccessPermission::revertAssert();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Ideas:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What you could do is integrate this into the document handling classes in AX and make this available as a feature on the document handling form. ie. Scan and attach a document&lt;/li&gt;&lt;li&gt;You could use the same for Web Cams and a few other devices&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4310676040760507833?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4310676040760507833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4310676040760507833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4310676040760507833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4310676040760507833'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/02/ax-scan-document.html' title='AX - Scan a document'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-3368230256393256439</id><published>2011-02-07T16:04:00.000+08:00</published><updated>2011-02-07T16:04:24.314+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Get rid of the white space on report footer</title><content type='html'>If you have a page footer and you don't call the super method in the executeSection. You will find the length of the footer is reserved as white space.&lt;br /&gt;&lt;br /&gt;Rather than just not calling the super method - you might consider calling&lt;br /&gt;element.disableSection(PageFooter_1)&lt;br /&gt;or&lt;br /&gt;element.disablePageFooter();&lt;br /&gt;&lt;br /&gt;This way - no space is reserved for the section.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-3368230256393256439?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/3368230256393256439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=3368230256393256439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3368230256393256439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3368230256393256439'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2011/02/ax-get-rid-of-white-space-on-report.html' title='AX - Get rid of the white space on report footer'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5490825095186526855</id><published>2010-11-05T19:11:00.000+08:00</published><updated>2010-11-05T19:11:10.548+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>AX - Import flat file job</title><content type='html'>I use this quite often. When I want a quick job to import a text file.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void ImportFileWithDialog(Args _args)&lt;br /&gt;{&lt;br /&gt;    AsciiIO     asciiIO;&lt;br /&gt;    Filename    filename;&lt;br /&gt;    NoYesId     skipFirstLine;&lt;br /&gt;    Container   line;&lt;br /&gt;    Dialog      dialog;&lt;br /&gt;    DialogField dialogFileName, dialogSkipFirstLine;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    dialog                  = new Dialog(&amp;quot;Import file&amp;quot;);&lt;br /&gt;    dialogFileName          = dialog.addField(typeid(Filenameopen), &amp;quot;File name&amp;quot;);&lt;br /&gt;    dialogSkipFirstLine     = dialog.addField(typeid(NoYesId), &amp;quot;Skip first line&amp;quot;);&lt;br /&gt;    dialog.run();&lt;br /&gt;&lt;br /&gt;    if (dialog.run())&lt;br /&gt;    {&lt;br /&gt;        filename      = dialogFileName.value();&lt;br /&gt;        skipFirstLine = dialogSkipFirstLine.value();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    asciiIO = new AsciiIO(filename, 'R');&lt;br /&gt;&lt;br /&gt;    if (!asciiIO &amp;#124;&amp;#124; asciiIO.status() != IO_Status::Ok )&lt;br /&gt;    {&lt;br /&gt;        throw error (strfmt(&amp;quot;@SYS19312&amp;quot;,filename));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ttsbegin;&lt;br /&gt;    asciiIO.inRecordDelimiter('\r\n');&lt;br /&gt;    asciiIO.inFieldDelimiter(',');&lt;br /&gt;&lt;br /&gt;    if (skipFirstLine)&lt;br /&gt;        line = asciiIO.read();&lt;br /&gt;&lt;br /&gt;    while (asciiIO.status() == IO_status::Ok)&lt;br /&gt;    {&lt;br /&gt;        line = asciiIO.read();&lt;br /&gt;&lt;br /&gt;        if (line)&lt;br /&gt;        {&lt;br /&gt;            info(conpeek(line,1));&lt;br /&gt;            info(conpeek(line,2));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    ttscommit;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-5490825095186526855?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5490825095186526855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5490825095186526855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5490825095186526855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5490825095186526855'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/11/ax-import-flat-file-job.html' title='AX - Import flat file job'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8454062491352741569</id><published>2010-11-05T19:06:00.000+08:00</published><updated>2010-11-05T19:06:59.423+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Table Maps</title><content type='html'>Maps in AX allow you to wrap tables at runtime. In other words, they allow you to map multiple table fields and share methods. One of the more popular ones is the AddressMap.&lt;br /&gt;The concept of Maps are great in AX but can be confusing at times.&lt;br /&gt;Check the msdn article: &lt;a href="http://msdn.microsoft.com/en-us/library/bb278211.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb278211.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the gotchas that experienced developers know about is. IntelliSense wont show the map. You have to type it in.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;custTable.AddressMap::formatAddress();&lt;br /&gt;ie. [table].[map name]::[method to call]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8454062491352741569?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8454062491352741569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8454062491352741569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8454062491352741569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8454062491352741569'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/11/ax-table-maps.html' title='AX - Table Maps'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4885146609480483505</id><published>2010-10-10T12:40:00.000+08:00</published><updated>2010-10-10T12:40:11.352+08:00</updated><title type='text'>AX - How to use Map and MapEnumerator</title><content type='html'>Similar to Set class, Map class allows you to associate one value (the key) with another value. Both the key and value can be any valid X++ type, including objects. The types of the key and the value are specified in the declaration of the map. The way in which maps are implemented means that access to the values is very fast.&lt;br /&gt;Below is a sample code that sets and retrieves values from a map. &lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void checkItemNameAliasDuplicate(Args _args)&lt;br /&gt;{&lt;br /&gt;    inventTable         inventTable;&lt;br /&gt;    Map                 map;&lt;br /&gt;    MapEnumerator       mapEnumerator;&lt;br /&gt;    NameAlias           nameAlias;&lt;br /&gt;    int                 counter = 0;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    map = new Map(Types::String, Types::Integer);&lt;br /&gt;&lt;br /&gt;    //store into map&lt;br /&gt;    while select inventTable&lt;br /&gt;    {&lt;br /&gt;        nameAlias = inventTable.NameAlias;&lt;br /&gt;        if (!map.exists(nameAlias))&lt;br /&gt;        {&lt;br /&gt;            map.insert(nameAlias, 1);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            map.insert(nameAlias, map.lookup(nameAlias) + 1);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    //retrieve from map&lt;br /&gt;    mapEnumerator = map.getEnumerator();&lt;br /&gt;    while (mapEnumerator.moveNext())&lt;br /&gt;    {&lt;br /&gt;        nameAlias       = mapEnumerator.currentKey();&lt;br /&gt;        info(strfmt(&amp;quot;%1,%2&amp;quot;,mapEnumerator.currentKey(),mapEnumerator.currentValue()));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa553382.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa553382.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4885146609480483505?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4885146609480483505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4885146609480483505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4885146609480483505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4885146609480483505'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/10/ax-how-to-use-map-and-mapenumerator.html' title='AX - How to use Map and MapEnumerator'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-1218938917097662086</id><published>2010-09-15T17:01:00.000+08:00</published><updated>2010-09-15T17:01:36.425+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>NAV 2009 R2 Streamed</title><content type='html'>Video is from May but it gives you an appreciation of cloud computing and where dynamics products are heading.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?feature=player_profilepage&amp;v=_okvCvd95Hg"&gt;Launch NAV R2 streamed RTC client on May 19 2010&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-1218938917097662086?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/1218938917097662086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=1218938917097662086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1218938917097662086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1218938917097662086'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/09/nav-2009-r2-streamed.html' title='NAV 2009 R2 Streamed'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8884917350646479605</id><published>2010-09-15T15:18:00.000+08:00</published><updated>2010-09-15T15:18:44.427+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Workflow troubleshooting</title><content type='html'>Microsoft released a troubleshooting document for workflow on customersource/partnersource.&lt;br /&gt;&lt;b&gt;How to troubleshoot common workflow issues for Microsoft Dynamics AX 2009&lt;/b&gt;&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/customersource/documentation/howtodocuments/ax2009_workflow_tips.htm"&gt;https://mbs.microsoft.com/customersource/documentation/howtodocuments/ax2009_workflow_tips.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8884917350646479605?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8884917350646479605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8884917350646479605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8884917350646479605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8884917350646479605'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/09/ax-workflow-troubleshooting.html' title='AX - Workflow troubleshooting'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6588508498567444119</id><published>2010-08-22T15:14:00.001+08:00</published><updated>2010-08-22T15:17:26.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HowTo'/><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - How to use Set and SetEnumerator</title><content type='html'>The Set class is used for the storage and retrieval of data from a collection in which the values of the elements contained are unique and serve as the key values according to which the data is automatically ordered.&lt;br /&gt;You can create a set of primitive data types or complex data types such as a Class, Record or Container.&amp;nbsp;Below is sample of a set of records.&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;static void _Set(Args _args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CustTable &amp;nbsp; &amp;nbsp; &amp;nbsp; custTable;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Set &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set = new Set(Types::Record);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SetEnumerator &amp;nbsp; setEnumerator;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while select custTable&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (custTable &amp;amp;&amp;amp; !set.in(custTable))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set.add(custTable);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!set.empty())&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setEnumerator = set.getEnumerator();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setEnumerator.reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (setEnumerator.moveNext())&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;custTable = setEnumerator.current();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;info(strfmt("Customer: %1",custTable.AccountNum));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Common mistake when creating a set of recIds is using integer. AX2009 uses Int64 but a cleaner way to write it is:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;set = new Set(typeId2Type(typeid(recId)));&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa861938.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa861938.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa891129.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa891129.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6588508498567444119?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6588508498567444119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6588508498567444119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6588508498567444119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6588508498567444119'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/08/ax-how-to-use-set-and-setenumerator.html' title='AX - How to use Set and SetEnumerator'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8699286971657232771</id><published>2010-07-30T18:32:00.000+08:00</published><updated>2010-07-30T18:32:42.135+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Workflow history form</title><content type='html'>The workflow history form is designed in a way where if you are a user in the Admin user group, you get view 1. If you are a user that is not in the Admin group, then you get view 2.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_4XcJSJWPsDc/TFKpITihqsI/AAAAAAAAAAs/1l8tOxFTKNU/s1600/2010-07-30_1828.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="466" src="http://3.bp.blogspot.com/_4XcJSJWPsDc/TFKpITihqsI/AAAAAAAAAAs/1l8tOxFTKNU/s640/2010-07-30_1828.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Workflow history - for admin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_4XcJSJWPsDc/TFKonwHXHOI/AAAAAAAAAAk/UNB52-khlKA/s1600/2010-07-30_1825.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="466" src="http://3.bp.blogspot.com/_4XcJSJWPsDc/TFKonwHXHOI/AAAAAAAAAAk/UNB52-khlKA/s640/2010-07-30_1825.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Workflow history - for non admin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;It checks the user by looking for the first usergroup in their list. If there is a user group which sorts higher than "Admin" then it will think you are not an Admin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8699286971657232771?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8699286971657232771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8699286971657232771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8699286971657232771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8699286971657232771'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/07/ax-workflow-history-form.html' title='AX - Workflow history form'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_4XcJSJWPsDc/TFKpITihqsI/AAAAAAAAAAs/1l8tOxFTKNU/s72-c/2010-07-30_1828.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-9120826836468958954</id><published>2010-07-26T17:02:00.000+08:00</published><updated>2010-07-26T17:02:25.730+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Server 2005 and 2008 - Backup, Integrity Check and Index Optimization</title><content type='html'>Ola Hallengren has updated his site to take care of SQL2008R2. That is some great work he has done. Specially considering he is giving it out for free.&lt;br /&gt;&lt;a href="http://ola.hallengren.com/"&gt;http://ola.hallengren.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-9120826836468958954?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/9120826836468958954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=9120826836468958954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/9120826836468958954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/9120826836468958954'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/07/sql-server-2005-and-2008-backup.html' title='SQL Server 2005 and 2008 - Backup, Integrity Check and Index Optimization'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6132482109707994955</id><published>2010-07-25T15:26:00.000+08:00</published><updated>2010-07-25T15:26:46.158+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>Purchase requisition – Price</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;The price fields on the purchase requisition are non-editable for catalogue items. It is expected that a trade agreement be created. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_4XcJSJWPsDc/TEvmnWlDE7I/AAAAAAAAAAM/SXq6Byk2TUg/s1600/2010-07-25_1456.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="76" src="http://2.bp.blogspot.com/_4XcJSJWPsDc/TEvmnWlDE7I/AAAAAAAAAAM/SXq6Byk2TUg/s640/2010-07-25_1456.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"/&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"/&gt;   &lt;v:f eqn="sum @0 1 0"/&gt;   &lt;v:f eqn="sum 0 0 @1"/&gt;   &lt;v:f eqn="prod @2 1 2"/&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"/&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @0 0 1"/&gt;   &lt;v:f eqn="prod @6 1 2"/&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"/&gt;   &lt;v:f eqn="sum @8 21600 0"/&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @10 21600 0"/&gt;  &lt;/v:formulas&gt;  &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/&gt;  &lt;o:lock v:ext="edit" aspectratio="t"/&gt; &lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:451.5pt;height:55.5pt;visibility:visible;mso-wrap-style:square'&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\mahmed\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.png"  o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;The price fields are only editable for these conditions:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Form is opened view AP -&amp;gt; Periodic -&amp;gt; Purchase Requisition -&amp;gt; All purchase requisition, or&lt;/li&gt;&lt;li&gt;Line type is “Non-catalogue item”, or&lt;/li&gt;&lt;li&gt;User is task owner. Ie. The task is assigned to the user. In other words he/she maybe the purchaser that gets the price.&lt;/li&gt;&lt;li&gt;User is approval owner. Ie. The approval is assigned to the user. In other words he/she maybe the manager that approves the final requisition.&lt;/li&gt;&lt;/ul&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;For catalogue items on the purchase requisition line can only select between the vendor directly associated with the item and the cheapest vendor as found through the purchase price trade agreements. If another vendor is requested the vendor can be blanked and the user can enter a “Proposed vendor” in the proposed vendor field on the general tab page for the purchase requisition line.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_4XcJSJWPsDc/TEvmy3infuI/AAAAAAAAAAU/y58IyfvGCRk/s1600/2010-07-25_1512.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="116" src="http://4.bp.blogspot.com/_4XcJSJWPsDc/TEvmy3infuI/AAAAAAAAAAU/y58IyfvGCRk/s640/2010-07-25_1512.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="mso-fareast-language: EN-AU; mso-no-proof: yes;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="Picture_x0020_7" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:451.5pt; height:82.5pt;visibility:visible;mso-wrap-style:square'&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\mahmed\LOCALS~1\Temp\msohtmlclip1\01\clip_image003.png"  o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;NOTE:&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt; Purchase order line prices and discounts are automatically recalculated when the line is of type catalogue item. The purchase order line price and discounts are not automatically recalculated when the line is of type non-catalogue item or when the line has been through an RFQ process. When the purchase order is created, auto miscellaneous charges for header and lines regardless of item type are automatically recalculated.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;So, make sure you set up a trade agreement before the order is created. Otherwise, the order may have an unexpected price.&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/8059654106901353803-6132482109707994955?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6132482109707994955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6132482109707994955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6132482109707994955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6132482109707994955'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/07/purchase-requisition-price.html' title='Purchase requisition – Price'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4XcJSJWPsDc/TEvmnWlDE7I/AAAAAAAAAAM/SXq6Byk2TUg/s72-c/2010-07-25_1456.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4192145777724303114</id><published>2010-06-04T15:31:00.000+08:00</published><updated>2010-06-04T15:31:05.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>AX - Links to good blogs</title><content type='html'>&lt;b&gt;Application consultants&lt;/b&gt;&lt;br /&gt;Supply Chain Management in Dynamics AX&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/dynamicsaxscm/"&gt;http://blogs.msdn.com/b/dynamicsaxscm/&lt;/a&gt;&lt;br /&gt;Dynamics AX Training&lt;br /&gt;&lt;a href="http://www.dynamicsaxtraining.com/trade-and-logistics-training"&gt;http://www.dynamicsaxtraining.com/trade-and-logistics-training&lt;/a&gt;&lt;br /&gt;Dynamics AX (General AX news and tips)&lt;br /&gt;&lt;a href="http://dynamics-ax.blogspot.com/"&gt;http://dynamics-ax.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Technical consultants&lt;/b&gt;&lt;br /&gt;MFP’s two cents&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/mfp/"&gt;http://blogs.msdn.com/b/mfp/&lt;/a&gt;&lt;br /&gt;Dynamics AX tools and tutorials&lt;br /&gt;&lt;a href="http://kashperuk.blogspot.com/"&gt;http://kashperuk.blogspot.com/&lt;/a&gt;&lt;br /&gt;Workflow&lt;br /&gt;&lt;a href="http://workflowax.wordpress.com/"&gt;http://workflowax.wordpress.com/&lt;/a&gt;&lt;br /&gt;EMEA Dynamics AX Support&lt;br /&gt;&lt;a href="http://blogs.msdn.com/"&gt;http://blogs.msdn.com&lt;/a&gt;&lt;br /&gt;Good AIF articles&lt;br /&gt;&lt;a href="http://www.ksaelen.be/wordpress/"&gt;http://www.ksaelen.be/wordpress/&lt;/a&gt;&lt;br /&gt;Dynamics AX Sustained Engineering&lt;br /&gt;&lt;a href="http://blogs.technet.com/"&gt;http://blogs.technet.com&lt;/a&gt;&lt;br /&gt;Saveen Reddy's blog (good SSRS articles)&lt;br /&gt;&lt;a href="http://blogs.msdn.com/"&gt;http://blogs.msdn.com&lt;/a&gt;&lt;br /&gt;AX Daily (regular small useful tips and tricks)&lt;br /&gt;&lt;a href="http://axdaily.blogspot.com/"&gt;http://axdaily.blogspot.com/&lt;/a&gt;&lt;br /&gt;AX Performance&lt;br /&gt;&lt;a href="http://blogs.msdn.com/axperf"&gt;http://blogs.msdn.com/axperf&lt;/a&gt;&lt;br /&gt;Issues concerning x++&lt;br /&gt;&lt;a href="http://blogs.msdn.com/x"&gt;http://blogs.msdn.com/x&lt;/a&gt;&lt;br /&gt;The Microsoft Dynamics AX &amp;nbsp;Enterprise Portal Blog&lt;br /&gt;&lt;a href="http://blogs.msdn.com/epblog"&gt;http://blogs.msdn.com/epblog&lt;/a&gt;&lt;br /&gt;Useful AIF Links around&lt;br /&gt;&lt;a href="http://daxdilip.blogspot.com/2010/05/aif-links.html"&gt;http://daxdilip.blogspot.com/2010/05/aif-links.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4192145777724303114?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4192145777724303114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4192145777724303114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4192145777724303114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4192145777724303114'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/06/ax-links-to-good-blogs.html' title='AX - Links to good blogs'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6969404205020440075</id><published>2010-04-22T22:02:00.000+08:00</published><updated>2010-04-22T22:02:26.173+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Field not showing in the workflow configuration</title><content type='html'>&lt;b&gt;Issue:&lt;/b&gt;&lt;br /&gt;I tried to setup a workflow configuration based on the Project field on the purchase requisition.&lt;br /&gt;For some reason the Project field was looking up the dimensions. I had a look at what dimensions I had in the system and I found the 4th dimension was called Project too.&lt;br /&gt;Because the workflow class builds a list on the field names. It only adds 1 field called Project. In other words, only allowing you to select 1 of the two fields labelled Project.&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/?action=view&amp;amp;current=Workflow_-_field_lookup.png" target="_blank"&gt;&lt;img alt="AX,Workflow" border="0" src="http://i467.photobucket.com/albums/rr40/munib00/Workflow_-_field_lookup.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;I renamed the dimension to "Project No". Something different.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6969404205020440075?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6969404205020440075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6969404205020440075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6969404205020440075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6969404205020440075'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/04/ax-field-not-showing-in-workflow.html' title='AX - Field not showing in the workflow configuration'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-2764268213554886093</id><published>2010-04-22T21:53:00.000+08:00</published><updated>2010-04-22T21:53:56.005+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - MultiSelectionHelper</title><content type='html'>Today I learned a new class which I think is great.&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc639186.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc639186.aspx&lt;/a&gt;&lt;br /&gt;The MultiSelectionHelper class provides an interface to work with multiple selected records on a form data source. Say you want to highlight a number of records and run a function against them.&lt;br /&gt;Here is some sample code:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public void initFromArgs(Args _args = this.parmArgs())&lt;br /&gt;{&lt;br /&gt;    MultiSelectionHelper    multiSelectionHelper;&lt;br /&gt;    PurchReqTable           purchReqTable;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    if (args &amp;amp;&amp;amp; args.caller() &amp;amp;&amp;amp; args.record())&lt;br /&gt;    {&lt;br /&gt;        multiSelectionHelper = MultiSelectionHelper::createFromCaller(args.caller());&lt;br /&gt;&lt;br /&gt;        multiSelectionHelper.createQueryRanges(queryRun.query().dataSourceTable(tablenum(PurchReqTable)), fieldstr(PurchReqTable, PurchReqId));&lt;br /&gt;&lt;br /&gt;        switch(args.record().TableId)&lt;br /&gt;        {&lt;br /&gt;            case tablenum(PurchReqTable) :&lt;br /&gt;                purchReqTable= multiSelectionHelper.getFirst();&lt;br /&gt;                while (purchReqTable)&lt;br /&gt;                {&lt;br /&gt;                    info(purchReqTable.PurchReqId);&lt;br /&gt;&lt;br /&gt;                    purchReqTable = multiSelectionHelper.getNext();&lt;br /&gt;                }&lt;br /&gt;                break;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-2764268213554886093?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/2764268213554886093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=2764268213554886093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2764268213554886093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2764268213554886093'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/04/ax-multiselectionhelper.html' title='AX - MultiSelectionHelper'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5088628295941866988</id><published>2010-04-18T18:17:00.000+08:00</published><updated>2010-04-18T18:17:42.309+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Section overlapped pageFooter section (maybe because the section is too high)</title><content type='html'>This error usual happens when you put a large block in the footer section or you have set the footer section height too high.&lt;br /&gt;Solution would be to adjust the height of the footer section or remove/reduce what you have on the footer section.&amp;nbsp;Or alternatively move your controls to a programmable section.&lt;br /&gt;&lt;br /&gt;I would do the latter if I am displaying a large block of text. For example terms and conditions at the end of a purchase order report.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-5088628295941866988?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5088628295941866988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5088628295941866988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5088628295941866988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5088628295941866988'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/04/ax-section-overlapped-pagefooter.html' title='AX - Section overlapped pageFooter section (maybe because the section is too high)'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-1911620791881411063</id><published>2010-04-18T18:02:00.000+08:00</published><updated>2010-04-18T18:02:00.781+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Modify Table collection when it is attached to a virtual company</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Recently I wanted to move the table collection to my dev environment.&amp;nbsp;The table collection was attached to a virtual company - the system wouldn't let me change it. I tried to delete - didn't work. I tried to import an xpo of the table collection changes - nothing happened. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;I had 2 options to do this:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;b&gt;Option 1:&lt;/b&gt; Do a full layer release to your environment. This is what you would do in production environment releases. I&amp;nbsp;didn't&amp;nbsp;want to do this because I had other changes in the environment that would have been over written.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;b&gt;Option 2:&lt;/b&gt; Find which virtual companies the table collection are used and delete them.&amp;nbsp;To find the&amp;nbsp;virtual companies&amp;nbsp;that are attached to the table collections&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&amp;nbsp;- go to &lt;i&gt;"\System Documentation\Tables\TableCollectionList"&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;You can do a dat/def export of this table. Changed the table collection. Then imported the dat/def.&lt;/span&gt;&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/8059654106901353803-1911620791881411063?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/1911620791881411063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=1911620791881411063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1911620791881411063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1911620791881411063'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/04/ax-modify-table-collection-when-it-is.html' title='AX - Modify Table collection when it is attached to a virtual company'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4615087271101260852</id><published>2010-04-14T20:26:00.000+08:00</published><updated>2010-04-14T20:26:44.427+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><category scheme='http://www.blogger.com/atom/ns#' term='RTC'/><title type='text'>NAV - The page contains a control add-in that is not permitted. Contact your system administrator.</title><content type='html'>After installing NAV2009SP1 and you try to open a clean database or your database. You may get this error.&lt;br /&gt;"The page contains a control add-in that is not permitted. Contact your system administrator."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reason:&lt;/b&gt; This happens because in NAV2009SP1 has a client add-in that comes with the role centre. This needs to be setup in the Client Add-in table.&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;amp;current=ClientAdd-in.png" target="_blank"&gt;&lt;img alt="NAV" border="0" src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/ClientAdd-in.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4615087271101260852?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4615087271101260852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4615087271101260852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4615087271101260852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4615087271101260852'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/04/nav-page-contains-control-add-in-that.html' title='NAV - The page contains a control add-in that is not permitted. Contact your system administrator.'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_ClientAdd-in.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-1883476344638339686</id><published>2010-03-21T15:08:00.000+08:00</published><updated>2010-03-21T15:08:03.170+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Install multiple workflow instances for Dynamics AX 2009</title><content type='html'>The standard install for AX2009 and AX2009SP1 does not allow you to run multiple workflow instances on the one machine. &lt;br /&gt;There is a KB article which explains how to do it. It requires an install.&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;en-us;960801"&gt;https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;en-us;960801&lt;/a&gt;&lt;br /&gt;After the install you essentially copy the workflow folder, virtual directory and application pool in IIS. Create your config file (*.axc) and point the web.config file to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-1883476344638339686?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/1883476344638339686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=1883476344638339686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1883476344638339686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/1883476344638339686'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/03/ax-install-multiple-workflow-instances.html' title='AX - Install multiple workflow instances for Dynamics AX 2009'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-2013540015457401389</id><published>2010-03-20T18:04:00.001+08:00</published><updated>2010-08-22T15:15:27.019+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Using Set-Based Updates in X++</title><content type='html'>This is a reminder more than anything else. Using set based updates is far more efficient.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;while select forupdate custTable &lt;br /&gt;where custTable.CustGroup == '10'&lt;br /&gt;{ &lt;br /&gt;    custTable.CustGroup = '20'; &lt;br /&gt;    custTable.doUpdate(); &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Can be rewritten in X++ as: &lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;update_recordset custTable &lt;br /&gt;setting CustGroup = '20' &lt;br /&gt;where custTable.CustGroup == '10';&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-2013540015457401389?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/2013540015457401389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=2013540015457401389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2013540015457401389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2013540015457401389'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/03/ax-using-set-based-updates-in-x.html' title='AX - Using Set-Based Updates in X++'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-634182342663126944</id><published>2010-03-20T18:00:00.000+08:00</published><updated>2010-03-20T18:00:50.280+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practice'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Best practice tip for controls</title><content type='html'>On forms you want to set controls ie enabled or visible&lt;br /&gt;You can do this by specifying the control name or the id but the best way is to do it like this:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;element.design().control(control::Name).visible(false);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;"control" is a system enum that maps the name to the id. &lt;br /&gt;&lt;br /&gt;Another advantage of doing it this is, you don't have to set the AutoDeclaration on the form control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-634182342663126944?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/634182342663126944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=634182342663126944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/634182342663126944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/634182342663126944'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/03/ax-best-practice-tip-for-controls.html' title='AX - Best practice tip for controls'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6527906330151414984</id><published>2010-03-11T17:41:00.000+08:00</published><updated>2010-03-11T17:41:39.282+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - send e-mail job</title><content type='html'>Sometimes you want to test your SMTP setup. I normally run this job (don't forget to change the parameters):&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void sendMail(Args _args)&lt;br /&gt;{&lt;br /&gt;    SysMailer           sysMailer;&lt;br /&gt;    SysEmailParameters  sysEmailParameters;&lt;br /&gt;    ;&lt;br /&gt;    sysEmailParameters = SysEmailParameters::find();&lt;br /&gt;&lt;br /&gt;    sysMailer = new SysMailer();&lt;br /&gt;    sysMailer.SMTPRelayServer(sysEmailParameters.SMTPRelayServerName, sysEmailParameters.SMTPPortNumber, sysEmailParameters.SMTPUserName, sysEmailParameters::password());&lt;br /&gt;&lt;br /&gt;    sysMailer.fromAddress(&amp;quot;from@defaultemail.com.au&amp;quot;);&lt;br /&gt;    sysMailer.tos().appendAddress(&amp;quot;to@defaultemail.com.au&amp;quot;);&lt;br /&gt;    sysMailer.subject(&amp;quot;test - subject&amp;quot;);&lt;br /&gt;    sysMailer.htmlBody(&amp;quot;test - body&amp;quot;);&lt;br /&gt;    sysMailer.sendMail();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6527906330151414984?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6527906330151414984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6527906330151414984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6527906330151414984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6527906330151414984'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/03/ax-send-e-mail-job.html' title='AX - send e-mail job'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6560692104689310531</id><published>2010-02-20T20:59:00.000+08:00</published><updated>2010-02-20T20:59:00.163+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Get tables virtual company id</title><content type='html'>To find a tables DataAreaId. This comes in handy when you are trying to select records from another company but that table may belong to a virtual company.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;ProjTable.Company('CEU');&lt;br /&gt;info(ProjTable.DataAreaId);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6560692104689310531?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6560692104689310531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6560692104689310531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6560692104689310531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6560692104689310531'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/02/ax-get-tables-virtual-company-id.html' title='AX - Get tables virtual company id'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-3630239507311113060</id><published>2010-02-20T20:50:00.002+08:00</published><updated>2010-02-20T20:50:36.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - get Extended Data Type label</title><content type='html'>To get an extended data type label.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void getEDTLabel(Args _args)&lt;br /&gt;{&lt;br /&gt;    Dictionary dict;&lt;br /&gt;    DictType dictType;&lt;br /&gt;    TreeNode treeNode = TreeNode::findNode(&amp;quot;Data Dictionary\\Extended Data Types\\ABCModelType&amp;quot;);&lt;br /&gt;    ;&lt;br /&gt;    dict = new Dictionary();&lt;br /&gt;    dictType = dict.typeObject(dict.typeName2Id(treeNode.treeNodeName()));&lt;br /&gt;    &lt;br /&gt;    info(treeNode.treeNodeName());&lt;br /&gt;    info(dictType.label());&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-3630239507311113060?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/3630239507311113060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=3630239507311113060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3630239507311113060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3630239507311113060'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/02/ax-get-extended-data-type-label.html' title='AX - get Extended Data Type label'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8224174161702876374</id><published>2010-02-16T19:34:00.000+08:00</published><updated>2010-02-16T19:34:16.631+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EP'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Issue deploying Proxies to Enterprise Portal site</title><content type='html'>I made some changes to the Proxies static file in AX. Generated the proxies in Visual Studio but for some reason it did not deploy to the site. There are known issues with 64bit/MOSS standard - that could have been causing the problems to deploy the files.&lt;br /&gt;&lt;br /&gt;At the end I copied the proxy files generated by visual studio to the site directory.&lt;br /&gt;From:&lt;br /&gt;C:\Users\admin\Documents\Visual Studio 2008\WebSites\MyProject\App_Code\Proxies&lt;br /&gt;To:&lt;br /&gt;C:\inetpub\wwwroot\wss\VirtualDirectories\80\App_Code\Proxies&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On another note. The ascx and cs files are kept here:&lt;br /&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\ep&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8224174161702876374?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8224174161702876374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8224174161702876374' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8224174161702876374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8224174161702876374'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/02/ax-issue-deploying-proxies-to.html' title='AX - Issue deploying Proxies to Enterprise Portal site'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8756108373359094497</id><published>2010-02-16T10:46:00.000+08:00</published><updated>2010-02-16T10:46:48.049+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Find if running client or server side</title><content type='html'>To find if you are running client or server side.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;if (isRunningOnServer())&lt;br /&gt;{&lt;br /&gt;  info('Server side');&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;  info('Client side');&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8756108373359094497?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8756108373359094497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8756108373359094497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8756108373359094497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8756108373359094497'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/02/ax-find-if-running-client-or-server.html' title='AX - Find if running client or server side'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5215412351376783063</id><published>2010-01-24T15:04:00.000+08:00</published><updated>2010-01-24T15:04:06.370+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - SQL query another database via ODBC</title><content type='html'>Recently I was involved in migrating a large data set from another database. The standard Excel import/export is a great tool for migrating data. Once you start importing over 500 records - it can get very slow.&lt;br /&gt;Here is some code to do an ODBC connection to execute a select statement.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;server static void main(Args args)&lt;br /&gt;{&lt;br /&gt;    LoginProperty                   loginProperty;&lt;br /&gt;    ODBCConnection                  connection;&lt;br /&gt;    Statement                       statement;&lt;br /&gt;    ResultSet                       resultSet;&lt;br /&gt;    SqlSystem                       sqlSystem;&lt;br /&gt;    SqlStatementExecutePermission   sqlStatementExecutePermission;&lt;br /&gt;    str                             sql = 'SELECT * FROM Vendor';&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    sqlSystem = new sqlSystem();&lt;br /&gt;    loginProperty = sqlSystem.createLoginProperty();&lt;br /&gt;    // Set server - if you dont setServer. It will use current server the AOS is on.&lt;br /&gt;    loginProperty.setServer('localhost');&lt;br /&gt;    loginProperty.setDatabase('OtherDb');&lt;br /&gt;    connection = new ODBCConnection(loginProperty);&lt;br /&gt;    statement = connection.createStatement();&lt;br /&gt;&lt;br /&gt;    //Assert&lt;br /&gt;    sqlStatementExecutePermission = new SqlStatementExecutePermission(sql);&lt;br /&gt;    sqlStatementExecutePermission.assert();&lt;br /&gt;&lt;br /&gt;    //BP Deviation Documented&lt;br /&gt;    resultset = statement.executeQuery(sql);&lt;br /&gt;    CodeAccessPermission::revertAssert();&lt;br /&gt;    while ( resultset.next() )&lt;br /&gt;    {&lt;br /&gt;        info(resultset.getString(1));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;You have use a class and run on server. If you create a job it wont work because it will run client side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-5215412351376783063?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5215412351376783063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5215412351376783063' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5215412351376783063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5215412351376783063'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/01/ax-sql-query-another-database-via-odbc.html' title='AX - SQL query another database via ODBC'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5742380996237272015</id><published>2010-01-23T12:39:00.000+08:00</published><updated>2010-01-23T12:39:27.260+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Loop through dimensions</title><content type='html'>This is a good article regarding handling dimensions in code.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/palle_agermark/archive/2006/03/30/Additioanl-Financial-Dimensions.aspx"&gt;http://blogs.msdn.com/palle_agermark/archive/2006/03/30/Additioanl-Financial-Dimensions.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;General idea to loop through dimensions.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void PrintDimensions(Args _args)&lt;br /&gt;{&lt;br /&gt;    Dimension   dimension;&lt;br /&gt;    int         numOfDimensions, i;&lt;br /&gt;;&lt;br /&gt;    numOfDimensions = dimOf(dimension);&lt;br /&gt;    &lt;br /&gt;    for (i = 1; i &amp;lt;= numOfDimensions; i++)&lt;br /&gt;    {&lt;br /&gt;        info(myTable::find('1001').dimension[i]); &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-5742380996237272015?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5742380996237272015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5742380996237272015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5742380996237272015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5742380996237272015'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/01/ax-loop-through-dimensions.html' title='AX - Loop through dimensions'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6404726098059310396</id><published>2010-01-16T15:42:00.001+08:00</published><updated>2010-01-16T15:43:06.849+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CAL'/><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><title type='text'>NAV - Change language at runtime</title><content type='html'>In my last &lt;a href="http://dynamicsnavax.blogspot.com/2010/01/ax-change-language-at-runtime.html"&gt;post&lt;/a&gt;. I showed how you can change the system language at runtime. You might want to do this when a you want to print 1 single report in a different language. &lt;br /&gt;NAV has the same ability too.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;GLOBALLANGUAGE := 3081; // To set it to Australia&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;To find the language ID. Go to Tools -&gt; Language. Then use Zoom (Ctrl+F8) on this form.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Warning:&lt;/b&gt; Set the language back when the report is finished.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6404726098059310396?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6404726098059310396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6404726098059310396' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6404726098059310396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6404726098059310396'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/01/nav-change-language-at-runtime.html' title='NAV - Change language at runtime'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-6604962152082944614</id><published>2010-01-16T15:34:00.001+08:00</published><updated>2010-01-16T15:35:11.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X++'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Change language at runtime</title><content type='html'>Last week I got a request to write a report in a different language.&lt;br /&gt;Instead of creating new labels. You can change the language at runtime using the infolog.language() method.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;static void TestDiffLanguage(Args _args)&lt;br /&gt;{&lt;br /&gt;    ;&lt;br /&gt;    info(&amp;quot;@SYS22548&amp;quot;);&lt;br /&gt;    infolog.language('de');&lt;br /&gt;    info(&amp;quot;@SYS22548&amp;quot;);&lt;br /&gt;    infolog.language('En-US');&lt;br /&gt;    info(&amp;quot;@SYS22548&amp;quot;);&lt;br /&gt;    infolog.language('ar');&lt;br /&gt;    info(&amp;quot;@SYS22548&amp;quot;);&lt;br /&gt;    infolog.language('En-AU');&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;I used it in the header and footer methods of the report.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Warning:&lt;/b&gt; This will change you system language. Make sure you set back to your own language at the end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-6604962152082944614?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/6604962152082944614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=6604962152082944614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6604962152082944614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/6604962152082944614'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2010/01/ax-change-language-at-runtime.html' title='AX - Change language at runtime'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-5301854935594632675</id><published>2009-12-28T15:18:00.001+08:00</published><updated>2009-12-28T15:23:29.648+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><category scheme='http://www.blogger.com/atom/ns#' term='RTC'/><title type='text'>NAV - RTC personal view and experience</title><content type='html'>In my personal experience RTC has been great. Here are some positives and negatives from my experience.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Positives:&lt;/b&gt;&lt;br /&gt;1) Personalization of the RTC - role centre/cues/fields etc. Everyone loves it.&lt;br /&gt;2) Web Services - I used this in my first implementation. Easy to use/very stable/fast to implement. Best thing since sliced bread. :)&lt;br /&gt;3) Reports - You can create some nice reports. Save to pdf and excel is a bonus.&lt;br /&gt;4) Training and adoption - you will find that adoption will be great. I found my client basically really taking charge and personalizing the client to their needs and to their teams needs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Negatives:&lt;/b&gt;&lt;br /&gt;1) Batch processes - They are slower. &lt;br /&gt;2) Large reports cause issues (may crashes in some incidents) - there has been some changes in SP1 but I don't think it fixes it totally. But it is a good improvement.&lt;br /&gt;3) In a fast data entry environment. Where you have people just entering orders all day. RTC is actually slower for them. NAV classic has always been great with shortcuts. Maybe this just needs getting used to.  They seem to be accepting/enjoying it more as time goes on.&lt;br /&gt;4) Reports - they take a little longer to develope. After you learn the tools. This is not a negative any more.&lt;br /&gt;5) Matrix forms - not so great in RTC. It is a lot easier to use the Classic client for analysis by dimensions and similar forms.&lt;br /&gt;&lt;br /&gt;Transformation tool - I only use the executable to create the page. Then I manually keep the form and page in synch. I find this so much faster.&lt;br /&gt;I personally will use the transformation tool if I had a repetitive task. Like maintaining an add-on.&lt;br /&gt;&lt;br /&gt;Overall - the positives outweigh the negatives. Even though I am mentioning more negatives (its easier to complain than to praise).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-5301854935594632675?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/5301854935594632675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=5301854935594632675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5301854935594632675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/5301854935594632675'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/nav-rtc-personal-view-and-experience.html' title='NAV - RTC personal view and experience'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-7772564118418347229</id><published>2009-12-28T14:50:00.000+08:00</published><updated>2009-12-28T14:50:41.339+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><title type='text'>NAV - Only ENU language installed in NAV2009SP1</title><content type='html'>&lt;b&gt;Issue:&lt;/b&gt;&lt;br /&gt;After installing the NAV2009SP1 classic client. You may find that only the ENU language being installed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reason:&lt;/b&gt;&lt;br /&gt;There has been major folder restructuring in the install disc in NAV2009. They have gone further in NAV2009SP1 - the language folders have been moved to the main "\Installer\" folder. So if you installed by executing the exe/msi in the client folder - then the language files wont be copied over.&lt;br /&gt;This is a conscious decision by Microsoft. From my understanding they are trying to centralize the installer to a world release and then you install your localized changes (ie language and db). This means everyone in the world will be using the exact same world installer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Resolution:&lt;/b&gt;&lt;br /&gt;Option 1 (preferred) - Execute the language installer under [drive]:\installer\ENA\&lt;br /&gt;Option 2 - Find the folders (ENA and ENZ) and copy them to the Classic\60 folder. Thats basically what option 1 does.&lt;br /&gt;Option 3 - Make sure you install using the main directory setup.exe. This should guide you through it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-7772564118418347229?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/7772564118418347229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=7772564118418347229' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7772564118418347229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7772564118418347229'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/nav-only-enu-language-installed-in.html' title='NAV - Only ENU language installed in NAV2009SP1'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-3410391080174648098</id><published>2009-12-28T14:23:00.000+08:00</published><updated>2009-12-28T14:23:43.971+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX2009SP1 - Analysis service install on SQL2008</title><content type='html'>You might receive this error message if you try to install analysis services component on a machine that has SQL2008.&lt;br /&gt;&lt;i&gt;"You must install SQL server 2005 Anaylsis Services Pack 2 before installing the Analysis extensions".&lt;/i&gt;&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=AnalysisServicesError2009-12-07_165.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/AnalysisServicesError2009-12-07_165.png" border="0" alt="AX"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Find the script and run it manually in "SQL Server Management Studio".&lt;br /&gt;\support\Analysis Services\Scripts\DynamicsAX.xmla&lt;br /&gt;&lt;br /&gt;Make sure you change the connection string (ctrl+F for connection).&lt;br /&gt;&lt;br /&gt;There is also a good blog &lt;br /&gt;&lt;a href="http://blog.davidsandor.com/post/SOLVED-You-must-install-SQL-Server-2005-Analysis-Services-with-Service-Pack-2-or-higher-before-installing-the-Analysis-extensions.aspx"&gt;here&lt;/a&gt;. This blog suggests uninstalling SQL2005express and going through the install program again.&lt;br /&gt;&lt;br /&gt;Good luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-3410391080174648098?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/3410391080174648098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=3410391080174648098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3410391080174648098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/3410391080174648098'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/ax2009sp1-analysis-service-install-on.html' title='AX2009SP1 - Analysis service install on SQL2008'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_AnalysisServicesError2009-12-07_165.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-4599129289416108209</id><published>2009-12-07T17:18:00.002+08:00</published><updated>2009-12-07T17:18:29.535+08:00</updated><title type='text'>AX2009SP1 - Hotfixes to consider when installing EP on 64bit and SQL2008</title><content type='html'>Here are a few hotfixes to consider:&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959111"&gt;https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959111&lt;/a&gt;&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;960048"&gt;https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;960048&lt;/a&gt;&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959494"&gt;https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959494&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-4599129289416108209?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/4599129289416108209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=4599129289416108209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4599129289416108209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/4599129289416108209'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/ax2009sp1-hotfixes-to-consider-when.html' title='AX2009SP1 - Hotfixes to consider when installing EP on 64bit and SQL2008'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8273563272709967729</id><published>2009-12-07T17:17:00.001+08:00</published><updated>2009-12-07T17:19:07.175+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX2009SP1  - Reporting Service install on SQL2008 error</title><content type='html'>When you try to install Reporting Service on SQL2008. You may receive this error:&lt;br /&gt;&lt;i&gt;"You must install SQL server 2005 Reporting Services Service Pack 2 before installing the report extensions".&lt;/i&gt;&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=ReportingServicesError2009-12-07_16.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/ReportingServicesError2009-12-07_16.png" border="0" alt="AX - Reporting Service install error"&gt;&lt;/a&gt;&lt;br /&gt;There is a hotfix for it:&lt;br /&gt;&lt;a href="https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959494"&gt;https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;959494&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8273563272709967729?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8273563272709967729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8273563272709967729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8273563272709967729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8273563272709967729'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/ax-reporting-service-install-on-sql2008.html' title='AX2009SP1  - Reporting Service install on SQL2008 error'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_ReportingServicesError2009-12-07_16.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-7616352847081163388</id><published>2009-12-07T16:25:00.002+08:00</published><updated>2009-12-07T16:26:05.671+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Workflow notification</title><content type='html'>Just an FYI.&lt;br /&gt;If you have a system with multiple companies. You want to view all your workflow notifications in the role centre. Right?&lt;br /&gt;Well thats how it works.&lt;br /&gt;If you are in the company where the document exists. You will get this when you right click:&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=WorkflowRightClick2009-12-07_1558.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/WorkflowRightClick2009-12-07_1558.png" border="0" alt="AX"&gt;&lt;/a&gt;&lt;br /&gt;If you are in the other company. You will get this:&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=WorkflowRightClickInAnotherCompany2.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/WorkflowRightClickInAnotherCompany2.png" border="0" alt="Workflow - approval in other company"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-7616352847081163388?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/7616352847081163388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=7616352847081163388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7616352847081163388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/7616352847081163388'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/ax-workflow-notification.html' title='AX - Workflow notification'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_WorkflowRightClick2009-12-07_1558.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-2658910385228512540</id><published>2009-12-06T14:22:00.001+08:00</published><updated>2009-12-06T14:23:03.000+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='AX'/><title type='text'>AX - Workflow - Direct approver</title><content type='html'>&lt;b&gt;Requirement:&lt;/b&gt;&lt;br /&gt;Can you send a direct workflow approval request to an employee in the system? You can’t do it in standard workflow.&lt;br /&gt;I.e. Can the user select who to send it to. Rather than the template determining it by Role/Hierarchy or specific user.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution: &lt;/b&gt;&lt;br /&gt;You can do this very easily witha simple mod.&lt;br /&gt;In this example we will look at purchase requisition workflow.&lt;br /&gt;1. Add a new field to the purchase requisition header. Called “Direct approver” (Employee table).&lt;br /&gt;2. Create a new class called &lt;br /&gt;with the following methods&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class PurchReqWorkflowParticipantProvider extends WorkflowUserGroupParticipantProvider&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public WorkflowParticipantTokenList getParticipantTokens()&lt;br /&gt;{&lt;br /&gt;    WorkflowParticipantTokenList tokenList = WorkflowParticipantTokenList::construct();&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    tokenList = super();&lt;br /&gt;&lt;br /&gt;    //Hardcoded to make it a readable&lt;br /&gt;    tokenList.add('DIRECTAPPROVER', 'Direct approver');&lt;br /&gt;    return tokenList;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public WorkflowUserList resolve(WorkflowContext _context,&lt;br /&gt;                                WorkflowParticipantToken _participantTokenName)&lt;br /&gt;{&lt;br /&gt;    PurchTable purchTable;&lt;br /&gt;    WorkflowUserList    userList = WorkflowUserList::construct();&lt;br /&gt;    ;&lt;br /&gt;    userList = super(_context,_participantTokenName);&lt;br /&gt;&lt;br /&gt;    if (_participantTokenName == 'DIRECTAPPROVER')&lt;br /&gt;    {&lt;br /&gt;        //DirectApprover is the new field I created on the PurchTable&lt;br /&gt;        //I did it all in 1 call but you could break it up to make it readable&lt;br /&gt;        userList.add(&lt;br /&gt;            SysCompanyUserInfo::findEmplId(&lt;br /&gt;                PurchTable::findRecId(&lt;br /&gt;                    _context.parmRecId()).DirectApprover).UserId);&lt;br /&gt;    }&lt;br /&gt;    return userList;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public static PurchReqWorkflowParticipantProvider construct()&lt;br /&gt;{&lt;br /&gt;    return new PurchReqWorkflowParticipantProvider();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now change the task/approver ParticipantProvider to point to your new class.&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=Workflow2009-12-06_1419.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/Workflow2009-12-06_1419.png" border="0" alt="AX"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When you configure your workflow it should look like this:&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=Workflow2009-12-06_1346.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/Workflow2009-12-06_1346.png" border="0" alt="AX"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-2658910385228512540?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/2658910385228512540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=2658910385228512540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2658910385228512540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/2658910385228512540'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/12/ax-workflow-direct-approver.html' title='AX - Workflow - Direct approver'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_Workflow2009-12-06_1419.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8889097257955885096</id><published>2009-11-16T20:14:00.002+08:00</published><updated>2009-12-06T14:35:44.768+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebServices'/><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><title type='text'>NAV - Web portal through Web Services</title><content type='html'>I have been working on an idea for a while now. Using web services which had come in in NAV2009 - I wanted to create a simple web portal which would allow customers to login, view their sales orders, view their invoices, view/download their statement and update their own records. &lt;br /&gt;&lt;br /&gt;With out spending too much time on this. I downloaded a free stylesheet (css).&lt;br /&gt;Using basic .NET membership I was able to create those things. &lt;br /&gt;With going into too much detail. Here are some screenshots.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=Login.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/Login.png" border="0" alt="Photobucket"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/?action=view&amp;current=OrderList.png" target="_blank"&gt;&lt;img src="http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/OrderList.png" border="0" alt="OrderList"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I found this link useful to upskill on .NET membership controls etc. &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/beginner/bb308874.aspx"&gt;Microsoft - Membership and Login Controls&lt;/a&gt;&lt;br /&gt;There is a lot of info on the web. Just google/bing ".NET membership".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is some code to list orders for a particular customer.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;public partial class OrderList : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        if (Page.User.Identity.IsAuthenticated)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            SalesOrder_Service service = new SalesOrder_Service();&lt;br /&gt;            service.UseDefaultCredentials = true;&lt;br /&gt;&lt;br /&gt;            SalesOrder_Filter filter = new SalesOrder_Filter();&lt;br /&gt;            filter.Field = SalesOrder_Fields.Sell_to_Customer_No;&lt;br /&gt;            filter.Criteria = Utility.GetUserName();&lt;br /&gt;&lt;br /&gt;            SalesOrder_Filter filter2 = new SalesOrder_Filter();&lt;br /&gt;            filter2.Field = SalesOrder_Fields.Status;&lt;br /&gt;            filter2.Criteria = &amp;quot;Released&amp;quot;;&lt;br /&gt;&lt;br /&gt;            SalesOrder[] salesOrders = service.ReadMultiple(new SalesOrder_Filter[] { filter, filter2 }, null, 0);&lt;br /&gt;            &lt;br /&gt;            rptMyOrders.DataSource = salesOrders;&lt;br /&gt;            rptMyOrders.DataBind();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Final words&lt;/b&gt;&lt;br /&gt;I am not here to try and give out a solution. I am just trying to get the idea that anything is possible with web services. It opens up so many doors.&lt;br /&gt;&lt;br /&gt;For end customers, you will need the External Connector for this. There is currently a &lt;a href="http://blogs.msdn.com/uknav/archive/2009/11/02/nav-external-connector-offer-is-back.aspx"&gt;promotion&lt;/a&gt; going on for existing customers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8889097257955885096?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8889097257955885096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8889097257955885096' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8889097257955885096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8889097257955885096'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2009/11/nav-web-portal-through-web-services.html' title='NAV - Web portal through Web Services'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i467.photobucket.com/albums/rr40/munib00/DynamicsNAVAX/th_Login.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-8117885954144862597</id><published>2008-10-26T19:26:00.004+09:00</published><updated>2009-12-06T14:36:01.961+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAV'/><title type='text'>NAV - Print &amp; E-Mail PDF</title><content type='html'>This has been blogged and discussed on forums many times before but I thought I would write one about &lt;a href="http://www.amyuni.com/"&gt;Amyuni&lt;/a&gt;. I have been using it for a number of years and IMHO is a very good product. This also works on vista and x64.&lt;br /&gt;&lt;br /&gt;Here is how to use it – I won't go into detail with all the variables etc:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;//PDFConverter &amp;#8211; Automation - 'Common Driver Interface Control'.CDIntfEx&lt;br /&gt;IF ISCLEAR(PDFConverter) THEN&lt;br /&gt;  CREATE(PDFConverter);&lt;br /&gt;&lt;br /&gt;// PrinterNameText on default install is 'Amyuni PDF Converter'&lt;br /&gt;PDFConverter.DriverInit(PrinterNameText);&lt;br /&gt;PDFConverter.Lock(PrinterNameText);&lt;br /&gt;&lt;br /&gt;//You must enable the printer with the correct licensee and activation code.&lt;br /&gt;//If this is different to the installation &amp;#8211; you will get an error.&lt;br /&gt;PDFConverter.EnablePrinter(LicenseeText,ActivationCodeText);&lt;br /&gt;PDFConverter.FileNameOptions(3);&lt;br /&gt;PDFConverter.DefaultDirectory(TEMPORARYPATH);&lt;br /&gt;PDFConverter.SetDefaultPrinter;&lt;br /&gt;PDFConverter.DefaultFileName(TempFileName);&lt;br /&gt;&lt;br /&gt;REPORT.RUNMODAL(REPORT::&amp;quot;Sales &amp;#8211; Invoice&amp;quot;,FALSE,TRUE,SalesInvHeader);&lt;br /&gt;&lt;br /&gt;PDFConverter.FileNameOptions(0);&lt;br /&gt;PDFConverter.RestoreDefaultPrinter;&lt;br /&gt;&lt;br /&gt;//Codeunit 397 - Mail&lt;br /&gt;IF Mail.NewMessage(SendTo,'',EmailSubject,EmailBody,TempFileName,TRUE) THEN;&lt;br /&gt;ERASE(TempFileName);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Most common issue people have with this is. The activation code doesn't match what has been installed or a different version is used.&lt;br /&gt;&lt;br /&gt;List of possible error codes are available here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amyuni.com/forum/viewtopic.php?p=6671&amp;amp;sid=e3fb6c01251153f5b6e48e452169b1a4"&gt;http://www.amyuni.com/forum/viewtopic.php?p=6671&amp;amp;sid=e3fb6c01251153f5b6e48e452169b1a4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Other option to try:&lt;br /&gt;&lt;br /&gt;PDF Creator &lt;a href="http://www.mibuso.com/forum/viewtopic.php?f=5&amp;amp;t=18331&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&amp;amp;hilit=pdf+converter+navision+ara3n&amp;amp;start=45"&gt;http://www.mibuso.com/forum/viewtopic.php?f=5&amp;amp;t=18331&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a&amp;amp;hilit=pdf+converter+navision+ara3n&amp;amp;start=45&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bullzip &lt;a href="http://mibuso.com/blogs/ara3n/2008/08/01/save-nav-reports-to-pdf/"&gt;http://mibuso.com/blogs/ara3n/2008/08/01/save-nav-reports-to-pdf/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; This is one of many options. Amyuni is not free but I believe well worth it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-8117885954144862597?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/8117885954144862597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=8117885954144862597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8117885954144862597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/8117885954144862597'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2008/10/print-e-mail-pdf.html' title='NAV - Print &amp;amp; E-Mail PDF'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8059654106901353803.post-92394305013543232</id><published>2008-10-25T15:40:00.001+08:00</published><updated>2009-12-06T14:36:17.379+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Everyone has to start somewhere</title><content type='html'>This is my first blog. I hope it helps people out there. I certainly learn a lot from other peoples blogs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8059654106901353803-92394305013543232?l=dynamicsnavax.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dynamicsnavax.blogspot.com/feeds/92394305013543232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8059654106901353803&amp;postID=92394305013543232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/92394305013543232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8059654106901353803/posts/default/92394305013543232'/><link rel='alternate' type='text/html' href='http://dynamicsnavax.blogspot.com/2008/10/everyone-has-to-start-somewhere.html' title='Everyone has to start somewhere'/><author><name>Munib</name><uri>http://www.blogger.com/profile/06121991889340202108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
