<?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-30350916</id><updated>2011-11-28T17:56:11.143-05:00</updated><title type='text'>Dave's Dynamics AX Blog</title><subtitle type='html'>This blog will cover the aggravations, frustrations, triumphs, enlightenments, and everything in-between throughout my experience implementing Dynamics AX 4.0 with a concentration in AIF development and customization.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30350916.post-952098309128738077</id><published>2009-10-09T08:00:00.002-04:00</published><updated>2009-10-09T08:13:55.618-04:00</updated><title type='text'>Microsoft Dynamics Salary Survey 2009</title><content type='html'>Brought to you as a service of this blog:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nigel Frank International would like to invite you to complete what is to be our annual survey of Microsoft Dynamics salaries worldwide.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The survey will only take a couple of minutes to complete and your response and any personal details will be kept strictly confidential. The survey is available in the following languages for your convenience; English, German, French, Dutch, Danish, Spanish, Italian, Norwegian, and Finnish.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a thank-you for your contribution we will send you a PDF report of the results once they have been compiled. This will give you an insight into the salaries, opinions and demographics of your Microsoft Dynamics counterparts worldwide.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please find a link to the Microsoft Dynamics Salary Survey 2009 below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.surveymonkey.com/s.aspx?sm=hEyZLcn_2b6Zc_2bmNoVMDvXnw_3d_3d"&gt;http://www.surveymonkey.com/s.aspx?sm=hEyZLcn_2b6Zc_2bmNoVMDvXnw_3d_3d&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Your response will be greatly appreciated and will help to give everyone in the Microsoft Dynamics community a greater understanding of their profession.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Martin Sharpe&lt;br /&gt;&lt;br /&gt;Research Analyst&lt;br /&gt;&lt;br /&gt;Nigel Frank International&lt;br /&gt;&lt;br /&gt;www.nigelfrank.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-952098309128738077?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/952098309128738077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=952098309128738077' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/952098309128738077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/952098309128738077'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2009/10/microsoft-dynamics-salary-survey-2009.html' title='Microsoft Dynamics Salary Survey 2009'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-8348650852770562339</id><published>2009-09-28T08:52:00.003-04:00</published><updated>2009-09-28T09:51:50.252-04:00</updated><title type='text'>Software Development Quality Assurance in AX</title><content type='html'>It's been over a year and a half since my last post, but I'm turning the ship towards a new course: Software Quality. During the hiatus, I've been working on multiple projects simultaneously which has taken me away from the day-to-day habits I used to engage like blogging on AX. My workload increased due to attrition and the economic situations not allowing those individuals to be replaced.&lt;br /&gt;&lt;br /&gt;As can be surmised, the more work I take on the more my quality has dipped. This is not as a result of my work ethic but rather the need to compact three full-time equivalents' jobs into a single full-time equivalent's day plus a few hours. Although the quality issues have been extremely minor and have resulted in no downtime, I still feel that zero quality issues are needed in all circumstances.&lt;br /&gt;&lt;br /&gt;To illustrate the dynamic nature of the position I have grown into (and many other Dynamics AX developers are facing), in the short time since I started writing this entry this morning, I have already had the following requests:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Researching a Windows 7 64-bit driver for a USB WiMax adapter&lt;/li&gt;&lt;li&gt;Reset an AD password&lt;/li&gt;&lt;li&gt;Clear out space on a linux server drive that had become full&lt;/li&gt;&lt;li&gt;Get the application back up and running that failed on the linux server as a result of the out of disk space issue&lt;/li&gt;&lt;li&gt;Have our corporate nagios administrator setup an alert to ensure we are notified when the drive becomes 80% full&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As you know, AX development is the majority of my job, but as you can see, systems administrator is now a part-time position for me. &lt;/p&gt;&lt;p&gt;With all that being said, the subject of this blog is changing to focus on helping the small-shop AX developer, who has other duties besides development, move towards having a very low error injection rate into the AX code they deploy.&lt;/p&gt;&lt;p&gt;David Bowles &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-8348650852770562339?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/8348650852770562339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=8348650852770562339' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/8348650852770562339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/8348650852770562339'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2009/09/software-development-quality-assurance.html' title='Software Development Quality Assurance in AX'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-3471823868183201349</id><published>2008-03-11T01:13:00.002-04:00</published><updated>2008-03-11T01:27:28.344-04:00</updated><title type='text'>Convergence 2008 - Day 1</title><content type='html'>While the first day of Convergence, Partner Day, was slow for a customer like myself, it will pick up tomorrow.  This has been my first Convergence attendance so of course like all first-timers, I've been wowed my the amount of cash and effort Microsoft has put into this conference.  Dynamics AX 2009 is the focal point on the AX side of the product offerings and judging by the looks of the amount of Marketing material, hand-on labs, and sessions Microsoft is providing, they're releasing it the 'right' way compared to my experience with the 4.0 launch in 2006. &lt;br /&gt;&lt;br /&gt;One bit of information that I've found a strong marketing campaign towards during Convergence is Dynamics Communities.  I've been a member of the Finance Community for a while now but a 'Sales and Marketing' and 'Customer Service' community has recently launched.  I encourage everyone who is currently not a member of at least one of these communities to get involved, especially if you do not have a support contract with either your partner or Microsoft. &lt;br /&gt;&lt;br /&gt;Clicking on the link below will take you directly to the registration page.  When registering, I kindly ask that you place my Dynamics Community screen name as your referral code, &lt;strong&gt;davidbowles.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="https://www.dynamics.com/UserProfile/HaveLiveId.aspx"&gt;https://www.dynamics.com/UserProfile/HaveLiveId.aspx&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;DB&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-3471823868183201349?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/3471823868183201349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=3471823868183201349' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/3471823868183201349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/3471823868183201349'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2008/03/convergence-2008-day-1.html' title='Convergence 2008 - Day 1'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-1365356805145172250</id><published>2008-03-07T11:12:00.002-05:00</published><updated>2008-03-07T11:19:19.356-05:00</updated><title type='text'>Convergence 2008 - Orlando</title><content type='html'>It's Friday finally! I haven't posted anything about Convergence, but better late than never. I will be at Convergence for anyone who is interested in meeting while I'm there. To help facilitate this, I have setup a Convergence Connect profile. While a portion of my time will be working at the technical services area of Convergence, I'll have other time to attend sessions and socialize as well.&lt;br /&gt;&lt;br /&gt;My main focus at Convergence is SQL Performance and PerformancePoint Server. Those are the two areas I'm hoping to make great strides in by mid-2008.&lt;br /&gt;&lt;br /&gt;While I have had many emails and comments asking about the results of the poll I was attempting to take on AIF usage, I have never received any responses on usage.  I'm not sure if this was due to not having time or literally no one who reads my blog using it, but if you're of the earlier persuasion, please come by and talk to me for a few minutes.  I'd really love to hear your success stories or otherwise in AIF.&lt;br /&gt;&lt;br /&gt;Look forward to seeing everyone there.&lt;br /&gt;&lt;br /&gt;David Bowles&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-1365356805145172250?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/1365356805145172250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=1365356805145172250' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1365356805145172250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1365356805145172250'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2008/03/convergence-2008-orlando.html' title='Convergence 2008 - Orlando'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-5625573443834123299</id><published>2008-03-03T23:13:00.002-05:00</published><updated>2008-03-03T23:18:24.874-05:00</updated><title type='text'>Do and Don't Lists</title><content type='html'>As an added service to you the developer or administrator, I have created two lists named "Do" and "Don't", respectively.  This is a quick hit list of things that you should at bare minimum entertain the idea of researching the possibility of implementing or definitely not doing at all.&lt;br /&gt;&lt;br /&gt;You will see these lists in the right margin at the end of the 'widgets'.  If you have a personal lesson learned that you think should be in the list, please send me an email.&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-5625573443834123299?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/5625573443834123299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=5625573443834123299' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5625573443834123299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5625573443834123299'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2008/03/do-and-dont-lists.html' title='Do and Don&apos;t Lists'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-2591998429007100542</id><published>2008-02-28T14:17:00.004-05:00</published><updated>2008-03-03T23:04:05.830-05:00</updated><title type='text'>Creating 'Permanent' Indexes on DataAreaId in Dynamics AX</title><content type='html'>&lt;strong&gt;Update - 3/3/2008...&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;I've received a couple of comments regarding this post. Let me add two points to my original post. First, this was more informational than an actual suggestion for your own system. As I stated below, if you have an index with only the DATAAREAID column selected as a 'Non-Clustered' index, this will work. If you add any other additional columns, then AX will remove it when a synchronization is ran. One caveat to this - I am doing this in RTM, so there is always the possibility of this not working in a later release of AX like 4.0 SP1 or SP2. While I'm not expecting to get any performance gain, I am expecting to silence the Query Tuning Wizard on requesting these indexes. As with any performance-related change, I'll monitor how this change affects our installation and adjust accordingly. If I find no harm in their existance, I'll probably leave them there. &lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;I appreciate everyone's feedback on this posting...&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;DB&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Below is the original post:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;As I get further from our Implementation Date, I'm transitioning from my original job of developer to more of a DBA/Business Analyst role. The primary reason for the DBA role is due to performance becoming increasingly more of an issue as our database grows and the once amateur users maturing into more novice users demanding even more resources out of the system.&lt;br /&gt;&lt;br /&gt;As I work towards optimizing indexes, monitoring resources, and optimizing X++ code, I notice that SQL balks a lot at tables missing indexes with only the 'dataareaid' field within it. As I've always known you cannot add an index to the AX database directly, likewise, you cannot add an index to AX's AOT with only the dataareaid field. Today, I stumbled upon a way to actually accomplish this. Most of you may be aware of this already but I've personally never seen a blog entry or MSDN entry on how doing this to satisfy SQL statistics. While this may not optimize the system at all, I do get asked by my boss a lot why I haven't created these indexes to satisfy what SQL believes it should have. I do know I haven't seen any issues from implementing these indexes.&lt;br /&gt;&lt;br /&gt;If you'd like to see if this will help in your server's performance, please try this first in your test/dev environment before even considering making this modification in your production environment. I'm sure this 'hack' is not supported nor advised by Microsoft.&lt;br /&gt;&lt;br /&gt;If you are unfamiliar with the 'Missing Indexes' query, try running the following query against your SQL database:&lt;br /&gt;&lt;br /&gt;SELECT TOP 20&lt;br /&gt;[Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0), avg_user_impact, TableName = statement,&lt;br /&gt;[EqualityUsage] = equality_columns, [InequalityUsage] = inequality_columns,&lt;br /&gt;[Include Cloumns] = included_columns&lt;br /&gt;FROM sys.dm_db_missing_index_groups g&lt;br /&gt;INNER JOIN sys.dm_db_missing_index_group_stats s&lt;br /&gt;ON s.group_handle = g.index_group_handle&lt;br /&gt;INNER JOIN sys.dm_db_missing_index_details d&lt;br /&gt;ON d.index_handle = g.index_handle&lt;br /&gt;ORDER BY [Total Cost] DESC;&lt;br /&gt;&lt;br /&gt;This query will give you what SQL believes are the top 20 missing index structures in your database.&lt;br /&gt;&lt;br /&gt;If your system is anything like ours, at least 1/5 to 1/10 of these will be Indexes with only the 'DataAreaId' column specified. To add this index in, just go right to the Indexes node within the SQL Table and create an index. Only index on the 'DataAreaId' column and set the index type to 'Non-Clustered'. Click Ok. If you run a synchronization against the table in the AOT, it will not delete the index. If you now rerun the query above you will see the record no longer appears.&lt;br /&gt;&lt;br /&gt;You may ask why I even bothered doing this. Well the answer is while the Total Cost and Average User Impact are all relative numbers, over the last several months I have lowered the highest Total Cost to around 10 billion and all of the records between 1 and 10 billion were all missing 'DataAreaId' indexes. After implementing four indexes the SQL statistics said I needed, my highest Total Cost is now only 28 million.&lt;br /&gt;&lt;br /&gt;I hope this advice may prove to be helpful or if nothing else serve as a 'Nice to Know'.&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-2591998429007100542?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/2591998429007100542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=2591998429007100542' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/2591998429007100542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/2591998429007100542'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2008/02/creating-permanent-indexes-on.html' title='Creating &apos;Permanent&apos; Indexes on DataAreaId in Dynamics AX'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-5856524506683961647</id><published>2008-01-01T00:55:00.000-05:00</published><updated>2008-01-01T01:28:17.001-05:00</updated><title type='text'>Happy New Year!</title><content type='html'>Along with a new year comes new opportunities, new resolutions, and new challenges for everyone to realize. &lt;br /&gt;&lt;br /&gt;My challenge, opportunity, and resolution for the new year is to update this blog more often.  Let's see if I can actually follow through...&lt;br /&gt;&lt;br /&gt;I have some new information to post regarding AIF queue management that I've known for a few months now but just have not made the time to formally post.&lt;br /&gt;&lt;br /&gt;As with most documentation that you see for setting up a batch server, the instructions either state or imply to run both the AOS service as well as the batch client on the same dedicated server.  This may at first seem like a common-sensical notion since the Batch Client, the AOS Service and the data storage all reside on the same system and will ultimately aide in reducing any network bottlenecks of large amounts of batchable transactions running across the network.  However, this is not the case because the bottleneck of having both components running on the same system is the memory.  Due to the 1.7GB limitation of 32-bit applications, the OS, the AOS, and the client are all contending for the available memory.&lt;br /&gt;&lt;br /&gt;Depending on the amount of transactions that you have processing in an hour, or even a day, separating the processes out onto separate servers may not be necessary for you.  In our case, we have approximately 1-500 messages measuring between 30-50KB that pass through our AX system via AIF every hour.  As a result of the number of messages we process, our 'All-In-One' setup proved to be quite the bottleneck and resulted with us constantly getting 'Out of Memory' errors in our AIF queue.  At one point, we had to filter out all messages larger than 200KB simply because even after freeing up all memory available, we still were unable to process those messages and import them through custom file I/O operations.  After testing and working Microsoft, we found that separating the AOS Service on a dedicated server and running the client(s) on a separate dedicated server gave us our best potential performance and freed up the client to contend for memory only against the OS and the same with the AOS service. &lt;br /&gt;&lt;br /&gt;To further increase our AIF performance, we found that instead of running all four AIF batch processes together in a single client session, separating each of the four out into separate client sessions increased performance.  As a result, you are not limited to the four processes being executed in a sequential order but instead they can all three execute independent and even concurrently.  Although the issue still exists that the four processes are related and dependent of each other, however, messages that are ready to be processed at the next execution of the batch are not held back from being processed.&lt;br /&gt;&lt;br /&gt;For example, the four AIF processing classes are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AIFSendGateway&lt;/li&gt;&lt;li&gt;AIFReceiveGateway&lt;/li&gt;&lt;li&gt;AIFInboundProcessingService&lt;/li&gt;&lt;li&gt;AIFOutboundProcessingService&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In order to import a message into AX, AIFReceiveGateway must execute to pull the message into the AIF Queue and the AIFInboundProcessingService must execute to process and persist the data to the database.  Likewise, to export a message, AIFOutboundProcessingService must retrieve the data from AX package it in the form of a message and write it to the queue before the AIFSendGateway can pick it up and write it to a message.  As a result, spliting up the jobs into different batch clients will allow you to make the AIF message passing process closer to a 'real-time' process.  &lt;/p&gt;&lt;p&gt;Finally on a separate note, I have just completed reviewing a new book on Dynamics AX that will soon be published.  Once the book is officially published, I will post a link to it.&lt;/p&gt;&lt;p&gt;DB &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-5856524506683961647?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/5856524506683961647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=5856524506683961647' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5856524506683961647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5856524506683961647'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2008/01/happy-new-year.html' title='Happy New Year!'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-846620532826420590</id><published>2007-11-05T08:20:00.000-05:00</published><updated>2007-11-05T08:22:17.733-05:00</updated><title type='text'>Comment Spam</title><content type='html'>Due to a recent surge in the amount of Anonymous comment spam, I am disabling anonymous comments.  If you'd like to leave a comment, you will need to register with blogger.com.&lt;br /&gt;&lt;br /&gt;Sorry for this inconvenience.&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-846620532826420590?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/846620532826420590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=846620532826420590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/846620532826420590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/846620532826420590'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/11/comment-spam.html' title='Comment Spam'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-3845700823226722657</id><published>2007-10-08T10:22:00.000-04:00</published><updated>2007-10-08T11:10:46.320-04:00</updated><title type='text'>AXUG Summit 2007</title><content type='html'>As our post-implementation deployment is wrapping up, I am going to make a point of posting more to this blog now that my time is freeing up to do other things. On October 15-17, I will be attending the AXUG Summit in Orlando, FL. There appears to be some great tracks to attend. I will be attending the performance track to see if I can't return with some knowledge on how to speed up some slowness in our invoicing process. If any of you will be attending, let me know and I'll be looking to speak to you.&lt;br /&gt;&lt;br /&gt;Just to fill you in now that things have calmed down, here's our implementation story:&lt;br /&gt;&lt;br /&gt;My lack of posts for the last four months have not been because I was too lazy but rather because of being overwhelmed with work. Our implementation was rocky but we made it work and persevered as a result. We have a VP who in my opinion is always a stellar performer. He's the sort of guy that even if everyone is looking at doom and gloom, his head is still held very high. If you ever see this guy looking down you better cover your head because the sky is surely falling. In my opinion he had a lot to do with the project's success. When all seemed as if it were about to fall apart, he was there to encourage all of us on the project and cheer us towards success.&lt;br /&gt;&lt;br /&gt;My shop is pretty small, less than eight regular IT employees and due to some recent departures is even smaller now. I was and am the only full-time developer for AX in our company during our implementation. I also have been the only person to become technically fluent with AX from installation to configuration to troubleshooting, etc. Why was our implementation this way? To some extent I can blame it on a lean budget but I can also point to our partner.&lt;br /&gt;&lt;br /&gt;Hind sight is always 20-20, of course.&lt;br /&gt;&lt;br /&gt;We were new to AX. I had just been hired in February 2006 and had the VPC of AX 4.0 Pre-Release given to me in June, no manuals, no documentation, just a job of learning it. Our Project Team was a who's who of the shining stars in the company, one from each functional area of the company. Not one of them had ever heard of AX, and only two or three had ever worked with or knew what an ERP system was. I was the black sheep being from a technical environment and actually having a two month head start on learning it.&lt;br /&gt;&lt;br /&gt;Our partner rolled in and immediately setup a project timeline and a go-live date, which we ultimately missed and had to reschedule three times. All seemed as if it were going well until we began official software modification in October. Developer resources from the partner were not cutting it. Each of the three guys who all in total spent less than two weeks with us seemed to have no real idea what was going on. These guys were asking me questions about AX... a scary thought. But the more scary thought was that I actually had the answers. As a result we determined very quickly that either the seasoned resources were tied up (as we were being told, although each of the three guys we received were 'Senior Developers', or seasoned developers did not exist - my personal belief). Before long into the development/modification phase, we hired a previous contractor of another in-house developed system and cut a lower hourly wage for me to teach him AX and X++ and have him at our disposal as needed. This turned out to be a better decision than the partner's own developers.&lt;br /&gt;&lt;br /&gt;In the end, we were still allowing our partner to make architectural decisions since they were &lt;supposedly&gt;the experts. They made decisions that I even knew were terrible although my experience in AX was lacking. At the time those design decisions were made, we accepted them and moved forward. Now looking back we all wished we had challenged their solutions.&lt;br /&gt;&lt;br /&gt;I share a glimpse into our implementation to convey a notion to you if you are the customer: Know AX.&lt;br /&gt;&lt;br /&gt;While I'm sure most implementations are packaged deals (like ours) where a team arrives and educates you first and then immediately begins the project, I suggest a different approach. If you can work it out, install the product first, allow your technical people and key functional people access to it and all of the training manuals for no less than a month. They need to understand what the product is, how it works in its pure state. Then and only then start the implementation project. If you as the customer rely on your partner 100% you, too, will experience modifications/business processes that were implemented but not fully thought out. The ramifications can be from as simple as a quick rewrite of a function to a complete overhaul in the next major AX release.&lt;br /&gt;&lt;br /&gt;If you are a partner, I encourage you to encourage your client to learn what AX has to offer and how it works from the beginning. Even if the Sales Order process looks nothing like what your customer will expect in the end, still encourage them to create an Item that they sell, create a customer, create the ledger accounts, execute a sales order. Make them understand how AX works before you begin consulting them on Architectural changes. In the end you will profit from a long-lasting business relationship rather than a continous finger-pointing who-did-what-wrong conflict.&lt;br /&gt;&lt;br /&gt;And in the end, isn't your goal a happy customer and continuous reference?&lt;br /&gt;&lt;br /&gt;Hope this helps those of you either in or preparing to enter an AX implementation, or for that matter any ERP or large-scale software implementation project.&lt;br /&gt;&lt;br /&gt;DB&lt;br /&gt;&lt;br /&gt;P.S. Are we happy with AX? Of course we are, but we weren't there on July 1st, the day we went live. Much massaging, cleanup, multiple phone calls to Fargo, several 36 hour+ days, and six weeks of no weekends or weekdays off had to be experienced before happiness was achieved but all in all we have learned from our mistakes and it has made us a better shop in the end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-3845700823226722657?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/3845700823226722657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=3845700823226722657' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/3845700823226722657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/3845700823226722657'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/10/axug-summit-2007.html' title='AXUG Summit 2007'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-1671466437651648608</id><published>2007-07-10T05:47:00.000-04:00</published><updated>2007-07-10T06:15:15.103-04:00</updated><title type='text'>AIF Email Survey</title><content type='html'>As you may know, my company went live on AX on July 1st.  As we are still working to fully stabilize AX and clean up any loose ends, I am still working to tweak AIF and am 90% toward our goal.  As with any application, you can test like there's no tomorrow, test large loads, small loads, erroneous loads, and everything in between but there's no substitute for real life. &lt;br /&gt;&lt;br /&gt;I'd like to conduct an email survey for anyone this is applicable to and willing to share usage statistics.  I'd like to know how your company is fairing with AIF in a live environment.  I'm looking for AIF data only, no Commerce Gateway or custom asciiIO/commaIO input/output processes. &lt;br /&gt;&lt;br /&gt;If you're interested in participating, please send an email to:  &lt;a href="mailto:david.bowles@yahoo.com"&gt;david.bowles@yahoo.com&lt;/a&gt;.  In the subject line, please put 'AIF Survey', without the quotes.  In the body, please copy and paste this template with the information you're willing to share filled out:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***************************&lt;br /&gt;Months Running Live on AIF: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Number of Actions Live on AIF:&lt;br /&gt;Number of 'Out of Box' Actions Live on AIF:&lt;br /&gt;Number of 'Customized From Scratch' Actions Live on AIF:&lt;br /&gt;Number of Sales Order-based Actions on AIF:&lt;br /&gt;Number of Purchase Order-based Actions on AIF:&lt;br /&gt;Number of Production-based Actions on AIF:&lt;br /&gt;Number of Inventory-based Actions on AIF:&lt;br /&gt;Number of Accounting-based (AR/AP/GL) Actions on AIF:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Number of external Systems interfacing AX through AIF:&lt;br /&gt;Using AIF to communicate via EDI?  Yes or No&lt;br /&gt;If Yes, What EDI Format and Version do you use: &lt;br /&gt;If Yes, also what Message Brokering/Transformation software do you use, if any: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On a daily average, how many errors do you encounter in your AifQueueManager needing correction?&lt;br /&gt;On a daily or monthly average (please specify which) how many AX AIF transactions do you receive?  Inbound _____   Outbound _____&lt;br /&gt;What frequency do you process AIF transactions?  Minutely, Quarter Hourly, Hourly, Bi-Daily, Nightly, Monthly&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How would you classify the performance of AIF in producing/consuming transactions?  Slow, Medium, Fast&lt;br /&gt;Based upon your answer above, does AIF's speed meet your expectations? Yes or No&lt;br /&gt;If AIF's speed is Slow or Medium or it's speed does not meet your expectations, have youworked with a DBA on optimizing database transactions during AIF execution to speed upthe transactions? &lt;br /&gt;If so, in comparison prior to the optimization, does AIF run faster, slower, or the same?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What type of business are you?&lt;br /&gt;***************************&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'd like to thank you in advance for sharing this.  After a week or so, I'll post the results of the survey.  You're welcome to send this to me totally anonymously.  I will not be posting any information regarding the submitter.  I'm interested in how many implementations are actually using AIF and to what extent as I'm sure all of you who are using it are interested as well.&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-1671466437651648608?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/1671466437651648608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=1671466437651648608' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1671466437651648608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1671466437651648608'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/07/aif-email-survey.html' title='AIF Email Survey'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-4993401985137455712</id><published>2007-06-01T20:55:00.000-04:00</published><updated>2007-06-01T21:24:41.533-04:00</updated><title type='text'>No, I haven't abandoned this blog...yet! :-)</title><content type='html'>Hello All,&lt;br /&gt;&lt;br /&gt;I apologize for my nearly two month delay on posting any new updates to the blog.  I've been incredibly busy, but isn't everyone?  We pushed back the go-live to July 1st due to some 'technical' difficulties - not AX related.  In the meantime I've been doing a lot of testing and developing some 'new requirements' also. &lt;br /&gt;&lt;br /&gt;To top it all off, I have also been preparing for a wedding as I'll be hanging up my bachelor's cap once and for all on June 16, therefore, I'll be out of contact from June 15 through June 24.  Once I get back to the states, I'll be sure to respond to any messages you email to me.  The week of June 24th I will be preparing for our July 1st go-live, so I'll be unavailable mostly that week and the week following.  Once we get AX stabalized I will be back on board making regular posts.  &lt;br /&gt;&lt;br /&gt;I can't really think of anything new to talk about in terms of Dynamics AX 4.0.  I have been working on some simple data exports outside of AIF using the standard asciiIO/commaIO classes.  I am finding that AIF works better with smaller amounts of records rather than larger.  We have a couple of outbound files that exports more than 60,000 records.  We are seeing minutes worth of difference between AIF and asciiIO exports.  I'm hoping that Microsoft realizes an opportunity to optimize the AIF for larger record loads in a later release of AX. &lt;br /&gt;&lt;br /&gt;Also, I want to thank everyone for their support.  I get emails and instant messages daily from you guys and I'm glad to help as much as possible.  I look forward to talking to each of you soon!&lt;br /&gt;&lt;br /&gt;David Bowles&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-4993401985137455712?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/4993401985137455712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=4993401985137455712' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/4993401985137455712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/4993401985137455712'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/06/no-i-havent-abandoned-this-blogyet.html' title='No, I haven&apos;t abandoned this blog...yet! :-)'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-6228179595470951425</id><published>2007-04-12T23:55:00.000-04:00</published><updated>2007-04-13T00:07:06.849-04:00</updated><title type='text'>Two 'Colorful' Blog Entries of Notability</title><content type='html'>I have been extremely busy lately with getting ready for our tentative go-live date of May 1, but tonight I took a few minutes to look around at other AX blogs out on the net and I found two entries from two different outstanding AX community contributors that I wanted to pass on to you in case you do not check their blogs often enough (which I highly advise to do daily):&lt;br /&gt;&lt;br /&gt;Kamal's entry on Graph creation in AX:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://casperkamal.spaces.live.com/blog/cns!9138ED475277CD63!262.entry"&gt;http://casperkamal.spaces.live.com/blog/cns!9138ED475277CD63!262.entry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Arijit's entry on Color-coding Grid Lines in AX:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://daxguy.blogspot.com/2007/04/coloring-grids-in-dax.html#links"&gt;http://daxguy.blogspot.com/2007/04/coloring-grids-in-dax.html#links&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will be implementing both of these HowTo's in our implementation once I get my head above water to begin doing some aesthetically pleasing mods to AX.&lt;br /&gt;&lt;br /&gt;Thank you Kamal and Arijit in sharing these helpful tips. These explanations are things that I would never have thought to ask the possibility about, mostly due to my tunnel vision toward May 1 :-).&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-6228179595470951425?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/6228179595470951425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=6228179595470951425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/6228179595470951425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/6228179595470951425'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/04/two-colorful-blog-entries-of-notability.html' title='Two &apos;Colorful&apos; Blog Entries of Notability'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-1252094450963308267</id><published>2007-04-01T15:18:00.000-04:00</published><updated>2007-04-01T15:29:00.925-04:00</updated><title type='text'>MVP Award</title><content type='html'>I want to thank anyone who participated in my nomination as a Microsoft MVP in Dynamics AX.  I am very thankful and gracious to have been awarded such a prestigious honor especially regarding a product that I have thoroughly enjoyed working with.  I hope over the last year from my early beginning in Dynamics AX in June through my gained experience in AIF Configuration and Modifications that I have enlighted each and everyone who has viewed my blog in some shape or another.  If I haven't, I will continue to strive to bring information forward so that everyone may benefit.  And as with any project, you never stop learning and I am as happy to give knowledge as I am to receive it. &lt;br /&gt;&lt;br /&gt;Thank you,&lt;br /&gt;&lt;br /&gt;David Bowles&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-1252094450963308267?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/1252094450963308267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=1252094450963308267' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1252094450963308267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1252094450963308267'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/04/mvp-award.html' title='MVP Award'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-971398996766464335</id><published>2007-03-29T11:15:00.000-04:00</published><updated>2007-03-29T11:22:07.034-04:00</updated><title type='text'>XML File Size limitation using FindList AIF Actions</title><content type='html'>If you develop a findList&lt;axdclass&gt; Action in AX AIF and your dataset is going to be bigger than about 3MB, you will need to follow some steps within the AX 4.0 release notes.  Search through it and find and execute the steps to add/modify the 'maxbuffersize' registry key.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-971398996766464335?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/971398996766464335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=971398996766464335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/971398996766464335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/971398996766464335'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/03/xml-file-size-limitation-using-findlist.html' title='XML File Size limitation using FindList&lt;AxdClass&gt; AIF Actions'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-8705382004239486063</id><published>2007-03-22T13:19:00.000-04:00</published><updated>2007-03-22T13:20:58.707-04:00</updated><title type='text'>Passed!</title><content type='html'>I passed the AX 4.0 Development Intro exam.  There were a couple of questions that made me sweat but for the most part it was everything most developers would deal with on a daily basis.&lt;br /&gt;&lt;br /&gt;DB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-8705382004239486063?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/8705382004239486063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=8705382004239486063' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/8705382004239486063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/8705382004239486063'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/03/passed.html' title='Passed!'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-4842320065654996821</id><published>2007-03-22T08:53:00.000-04:00</published><updated>2007-03-22T08:57:42.639-04:00</updated><title type='text'>Testing Today...</title><content type='html'>Sorry for the delay since my last entry, I've been tied up working on this last stretch of testing and development before we go live.  I needed a slight break today so I scheduled an exam at lunch.  I will be taking the MB6-508 AX 4.0 Development Introduction Exam.  I'm excited and ready to get this one behind me and will be hoping for Prometric to release the AX 4.0 MorphX Solution Development Exam soon...&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-4842320065654996821?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/4842320065654996821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=4842320065654996821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/4842320065654996821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/4842320065654996821'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/03/testing-today.html' title='Testing Today...'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-5081546913984743906</id><published>2007-03-06T08:29:00.000-05:00</published><updated>2008-12-09T02:59:24.902-05:00</updated><title type='text'>Setting AIF To Output All Documents on Outbound Transactions</title><content type='html'>If you develop an outbound AIF transaction and determine when you execute it that not all the records you are expecting are exporting, check the 'Limit Number of Documents' field in your AIF setup.&lt;br /&gt;&lt;br /&gt;This field can be found by first opening the 'Endpoints' form in Basic-&gt;Setup-&gt;Application Integration Framework, then highlighting the Endpoint in question, clicking 'Action Policies', highlighting the outbound action in question, clicking the 'Configure' button, and clicking the 'Setup' tab.&lt;br /&gt;&lt;br /&gt;By default, this field is set to 'Yes', which means that AIF will only output the first 1000 records of any AIF &lt;strong&gt;outbound&lt;/strong&gt; transaction where there are more than 1000 records.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_QE_ZOmtGZas/Re1ua5YRMoI/AAAAAAAAAAg/umR4m3Ps9m8/s1600-h/AIF_ActionPolicies_Configuration_Setup.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5038804966455718530" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_QE_ZOmtGZas/Re1ua5YRMoI/AAAAAAAAAAg/umR4m3Ps9m8/s320/AIF_ActionPolicies_Configuration_Setup.png" border="0" /&gt;&lt;/a&gt; &lt;span style="font-size:85%;"&gt;Setup Tab of Action Policies Configure Form&lt;/span&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;Microsoft product screen shot(s) reprinted with permission from Microsoft Corporation.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-5081546913984743906?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/5081546913984743906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=5081546913984743906' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5081546913984743906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5081546913984743906'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/03/setting-aif-to-output-all-documents-on.html' title='Setting AIF To Output All Documents on Outbound Transactions'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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/_QE_ZOmtGZas/Re1ua5YRMoI/AAAAAAAAAAg/umR4m3Ps9m8/s72-c/AIF_ActionPolicies_Configuration_Setup.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-84009412223763284</id><published>2007-02-07T17:46:00.000-05:00</published><updated>2007-03-06T16:44:39.419-05:00</updated><title type='text'>Installing Dynamics AX 4.0 RTM Side-By-Side with 4.0 SP1</title><content type='html'>I haven't seen any real documentation on how run 4.0 RTM and 4.0 SP1 side-by-side, so I will address the steps that I took to make this happen. I don't believe that this configuration is supported by Microsoft, so you should only do this in a test or development environment (like I am doing) and make sure you have a backup before proceeding with these steps:&lt;br /&gt;&lt;br /&gt;1.) Backup the DB of the environment you are trying to duplicate and upgrade to SP1.&lt;br /&gt;&lt;br /&gt;2.) Backup the entire Application folder of the environmnet you are trying to duplicate and upgrade to SP1. If you don't know what or where your Application folder is, you probably should proceed any further.&lt;br /&gt;&lt;br /&gt;3.) If you have a 4.0 RTM client on the server where your AOS and File Server is located, you must install it.&lt;br /&gt;&lt;br /&gt;4.) Make a copy of your Common Folder in the Microsoft Dynamics\4.0\Server\Common location and call it 'Common RTM'. This will allow you to still configure the 4.0 RTM server environments. Otherwise, you will have problems with the new configuration applet saving the RTM configs correctly since SP1 introduces new Clustering settings.&lt;br /&gt;&lt;br /&gt;5.) Install Dynamics AX 4.0 SP1, using the steps in the Microsoft Dynamics AX 4.0 SP1 Upgrade Documentation, specifically page 8 and page 9. (Note only installing the Object Server and File Server and possibly the Dynamics AX 4.0 SP1 client if you want to be able to open ONLY the Dynamics AX 4.0 SP1 environment). Note that on Page 9, point #3, you should not include the axsys.aod file in the files you move to Application\Appl\Standard\Old - this will stop you from being able to create an Upgrade Project.&lt;br /&gt;&lt;br /&gt;6.) Before Starting the AOS Service, open the Dynamics AX Server Configuration Utility and import/create a new server configuration that puts the new 4.0 SP1 upgraded environment on a different port than your Dynamics AX 4.0 RTM environment.&lt;br /&gt;&lt;br /&gt;7.) Start the AOS Service as indicated on the Microsoft Dynamics 4.0 SP1 upgrade document on page 9 point #5. You can continue on with Microsoft's approved steps from this point.&lt;br /&gt;&lt;br /&gt;The biggest two points that I can stress about attempting this is:&lt;br /&gt;&lt;br /&gt;A.) BACKUP, BACKUP, BACKUP&lt;br /&gt;&lt;br /&gt;B.) Don't forget to make a copy of the Common Folder. as stated in #4 above. If you forget this step and try to open a Dynamics AX 4.0 RTM Server configuration file with the Dynamics AX 4.0 SP1 Server configuration applet and save it, you will hose up your server service the next time you stop and start that server service.&lt;br /&gt;&lt;br /&gt;Remember, Microsoft does not endorse my steps. These steps worked great for me but may not work so great for you. Please backup and plan accordingly for issues. Please do not take your issues with these steps to Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-84009412223763284?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/84009412223763284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=84009412223763284' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/84009412223763284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/84009412223763284'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/02/installing-ax-40-rtm-side-by-side-with.html' title='Installing Dynamics AX 4.0 RTM Side-By-Side with 4.0 SP1'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-6855177897930332080</id><published>2007-02-07T14:04:00.001-05:00</published><updated>2007-03-06T16:45:43.465-05:00</updated><title type='text'>Quick Tip Regarding DB Synchronization Errors</title><content type='html'>&lt;p&gt;I'm sure most Dynamics AX admins/developers are aware of this but I decided to post it anyway. I didn't know how to fix this error when I encountered it during an attempted upgrade to 4.0 SP1 and also one of the Dynamics AX Technical contractors I worked with on setting up Dynamics AX back in August 2006 also didn't know how to fix the problem and he had worked with Dynamics AX since 2.5 was released. &lt;/p&gt;&lt;p&gt;If you encounter Synchronization errors, view the Application Event Log to determine what caused the error. In my case, there were two tables that contained duplicate data in key fields within multiple records. Because this data was part of the DMO company and there were no other records that were part of any company in use, I simply deleted the tables and re-synchronized. If your records are part of live data, I would advise attempting to correct the anomolies within the database and re-synchronizing.&lt;/p&gt;&lt;p&gt;Hope this helps!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-6855177897930332080?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/6855177897930332080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=6855177897930332080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/6855177897930332080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/6855177897930332080'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/02/quick-tip-regarding-db-synchronization.html' title='Quick Tip Regarding DB Synchronization Errors'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-5255424970300899941</id><published>2007-01-29T16:45:00.000-05:00</published><updated>2007-01-29T17:13:51.687-05:00</updated><title type='text'>X12 EDI 857/856 Documents</title><content type='html'>Is anyone utilizing 857 or 856 ASN with their EDI processes in AX/Axapta?  It appears that BizTalk doesn't support this out of the box and neither does Covast EDI Accelerator.  If so, please send me an email and tell me how you implemented this document to integrate seamlessly with your AX install.&lt;br /&gt;&lt;br /&gt;Thanks in Advance!&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-5255424970300899941?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/5255424970300899941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=5255424970300899941' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5255424970300899941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/5255424970300899941'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/01/x12-edi-857856-documents.html' title='X12 EDI 857/856 Documents'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-1119051913070776331</id><published>2007-01-22T20:25:00.000-05:00</published><updated>2007-01-22T21:35:48.772-05:00</updated><title type='text'>Miscellaneous Topics</title><content type='html'>I haven't posted much because of my lack of time since we're so close to go-live, but I wanted to at least add one tonight.  I don't have much but here's a couple of things I have found since I last posted: &lt;br /&gt;&lt;br /&gt;Microsoft released an AIF Whitepaper in December that covers just about everything I have posted on my blog regarding AIF configuration.  I'm posting the link here because I haven't seen any postings about it on other Dynamics blogs:  &lt;a href="https://mbs.microsoft.com/customersource/support/documentation/whitepapers/DAX_AIF_Config.htm"&gt;https://mbs.microsoft.com/customersource/support/documentation/whitepapers/DAX_AIF_Config.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have almost finished all of our AIF development.  Now we are concentrating on developing the Invoice output process but finding a slight difficulty due to our interaction with X12 EDI.  The X12 version 4010 857 Advance Shipment Notice / Invoice requires that the ASN information appear in a hierarchical format that is similar to:&lt;br /&gt;&lt;br /&gt;     Shipment&lt;br /&gt;          Order&lt;br /&gt;               Pallet&lt;br /&gt;                    Item&lt;br /&gt;&lt;br /&gt;The complications with translating to this data structure is that the AIF produces a relational data structure, of which is based upon a Sales Table header, Sales Table detail, and Shipment detail record.  For logistical efficiency purposes, the 857 is setup to be hierarchical because you could have a single line item split among one or more Pallets because of a physical limitation on the nunber of items that will fit on one pallet.  In order to accommodate for the hierarchical structure, you have to modify AX's functionality, specifically the Shipments table.  Within this table you have to add Trailer, Bill Of Lading, Pallet, Item, and Quantity data. &lt;br /&gt;&lt;br /&gt;Due to the lack of direct support for X12 4010 EDI Transaction Sets from BizTalk, we decided to utilize MessageWay Solutions MessageWay Managed File Transfer application.  It's been a great fit for us since it already has all X12, EDIFACT, and SWIFT EDI formats already integrated into the product.  With minimal BASIC programming experience, you can extend the mapping capability past it's basic drag and drop functionality.  This also worked much better for us because we wouldn't need a .NET programming on-site to develop C# or VB.NET mapping/translation applets for BizTalk.  Although I was not able to get on the testing list, BizTalk 2006 R2 is in Beta now and it reported has all the EDI transaction sets integrated in it. &lt;br /&gt;&lt;br /&gt;Finally, I registered for Convergence on Friday.  I'm looking forward to attending as this will be my first time.  On top of attending MS Convergence, I will also be attending the AXUG Pre-Conference taking place on Sunday afternoon.  I encourage everyone to either join AXUG personally or encourage their company to become active in AXUG and attend their regional events.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-1119051913070776331?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/1119051913070776331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=1119051913070776331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1119051913070776331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/1119051913070776331'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2007/01/miscellaneous-topics.html' title='Miscellaneous Topics'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-7021985315746019449</id><published>2006-12-14T20:16:00.000-05:00</published><updated>2008-12-09T02:59:25.068-05:00</updated><title type='text'>VendAccountItemLookup Form</title><content type='html'>&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;During our implementation, one of the engineers on our functional team brought it to my attention that a particular lookup did not show vendor names next to their account numbers and the lookup needed to be modified. After a couple of hours of trying to determine where the lookup was located, a technician from Microsoft was able to point me to the correct form.&lt;br /&gt;&lt;br /&gt;The form is 'vendaccountitemlookup'. This form is used in different areas of AX for use as the vendor field lookup form. So far, I have found it in 'Planned Orders' form within Master Planning and within Inventory Management under the 'References'. I will also place an example screenshot at the bottom of this post.&lt;br /&gt;&lt;br /&gt;The problem our engineer had was that the lookup form has three tabs: 'All Vendors', 'According to Trade Agreements', and 'According to External Item Descriptions'. The 'All Vendors' tab only has the Vendor's Name field in it. If you click over to the 'According to Trade Agreements' or 'According to External Item Descriptions', you only see the vendor's account number. Now if you hold your cursor over the field long enough, you get the automated help text, but it disappears after a few seconds. I'm not sure why this wasn't existing functionality, but I am working on modifying this form to include the Vendor name joined to the proper vendor account number for the respective account number in each tab.&lt;br /&gt;&lt;br /&gt;The AX Development Team was able to set this field's lookup simply by including the form name in the 'FormHelp' property of the Extended Data Type that represents the Vendor Account field, which in this case the EDT is 'ItemPrimaryVendId'.&lt;br /&gt;&lt;br /&gt;I apparently missed this somewhere in the documentation I have read for AX as this being a possibility for assigning a lookup form to a field. To date, I have either coded my lookups dynamically using the systemlookup form within a lookup() method or I have performed it through an autolookup. As you can see this functionality will allow you to create powerful lookups that can even be multi-tabbed.&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5008568351640027122" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_QE_ZOmtGZas/RYICYRjEf_I/AAAAAAAAAAM/SfZmj7ETss4/s320/vendoraccountitemlookup.png" border="0" /&gt; &lt;p align="center"&gt;(&lt;em&gt;VendAccountItemLookup Form) &lt;/em&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;em&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Microsoft product screen shot(s) reprinted with permission from Microsoft Corporation.&lt;/span&gt;&lt;/p&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-7021985315746019449?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/7021985315746019449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=7021985315746019449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/7021985315746019449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/7021985315746019449'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/12/vendaccountitemlookup-form.html' title='VendAccountItemLookup Form'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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/_QE_ZOmtGZas/RYICYRjEf_I/AAAAAAAAAAM/SfZmj7ETss4/s72-c/vendoraccountitemlookup.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-116579182165332608</id><published>2006-12-10T17:48:00.000-05:00</published><updated>2006-12-10T18:03:41.666-05:00</updated><title type='text'>Update</title><content type='html'>I've been absent from the Dynamics AX scene for five weeks now due to some other pressing issues.  We have two additional developers now besides me so I've had to focus my efforts on hardware issues such as having our new EMC CX3-20 2TB SAN installed and getting our production systems physically installed and imaged at our new data center.  We are getting pretty close to our go live date of February 1 and this week I'm finally transitioning back to the role of a developer / tester.  &lt;br /&gt;&lt;br /&gt;I have no substantial information to give out on AX this time, unfortunately.  I have learned a lot of lessons as a result of having diverted my attention elsewhere for the majority of this past month.&lt;br /&gt;&lt;br /&gt;AX 4.0 SP1 has been a distant blip on the radar screen and I was disappointed that it was delayed so long for release.  Because of the amount of work that has yet to be completed, I have had to recommend to our project team and management to delay SP1's implementation until after go-live due to our time constraints.&lt;br /&gt;&lt;br /&gt;The remainder of this month will be spent getting the AIF side of AX fully running and integrated with our WMS system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116579182165332608?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116579182165332608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116579182165332608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116579182165332608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116579182165332608'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/12/update.html' title='Update'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116248751006072863</id><published>2006-11-02T12:03:00.000-05:00</published><updated>2006-11-02T12:11:50.076-05:00</updated><title type='text'>Custom Validation Modifications to AIF</title><content type='html'>Yesterday I was able to fully setup a custom validation within AIF.  The validation was regarding ItemIds (Part Numbers) in AX.  Out of the box, when the 'createListSalesOrder' action is executed on an inbound XML Sales Order, the entire process halts upon validation of an invalid ItemId (one that is not in the Item List (InventTable).  I developed a workaround to check for the current ItemId's existence in the InventTable and if it's not present, replace the invalid ItemId with a valid catch-all ItemId, which will allow AIF to continue processing the Sales Order.  So far this modification has been successful.&lt;br /&gt;&lt;br /&gt;In general terms, you can make customizations to any of AIF's transactions simply by modifying the appropriate parm[field_name] method within the appropriate Ax[Table] class for the field that you want to add addition customizations on.  In my example, I modified the parmItemId method within the AxSalesLine class.  Here is the new parmItemId() method with my modification:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;public str parmItemId(str _itemId = '')&lt;br /&gt;{&lt;br /&gt;    DictField   dictField;&lt;br /&gt;    ItemId      tempItemId;&lt;br /&gt;    InventTable tempInventTable;&lt;br /&gt;    ;&lt;br /&gt;&lt;br /&gt;    //My custom code to validate ItemId's existence in the Item Master and replace w/ 'InvalidItem' if not&lt;br /&gt;    tempItemId = _itemId;&lt;br /&gt;    SELECT FIRSTONLY ItemId FROM tempInventTable WHERE tempInventTable.ItemId == tempItemId;&lt;br /&gt;    if (tempInventTable.ItemId != _itemId)&lt;br /&gt;    {&lt;br /&gt;        _itemId = "**INVALIDITEM**";&lt;br /&gt;        salesLine.ItemId = _itemId;&lt;br /&gt;        salesLine.Name = tempItemId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (!prmisdefault(_itemId))&lt;br /&gt;    {&lt;br /&gt;        dictField = new DictField(tablenum(SalesLine),fieldnum(SalesLine,ItemId));&lt;br /&gt;        this.validateInboundItemIdString(_itemId,dictField);&lt;br /&gt;        if (this.valueMappingInbound())&lt;br /&gt;        {&lt;br /&gt;            item = _itemId;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        this.setField(fieldnum(SalesLine, ItemId), _itemId);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (this.valueMappingOutbound())&lt;br /&gt;    {&lt;br /&gt;        return conpeek(this.axSalesItemId(salesLine.CustAccount,salesLine.ItemId,salesLine.inventDim()),1);&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        return salesLine.ItemId;&lt;br /&gt;    }&lt;br /&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Although this is my first shot at AIF modification, I would recommend placing your modification above the existing code.  The out of the box code does other validations and checks like seeing whether or not AIF should place default data into a field.&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116248751006072863?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116248751006072863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116248751006072863' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116248751006072863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116248751006072863'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/11/custom-validation-modifications-to-aif.html' title='Custom Validation Modifications to AIF'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-116195554161719875</id><published>2006-10-27T09:23:00.000-04:00</published><updated>2006-10-27T09:25:41.683-04:00</updated><title type='text'>Stepping through AIF Processing Code</title><content type='html'>I meant to cover this in my last entry, but Kamal beat me to posting how to debug the AIF Inbound Processing framework.  Please check out his October 23rd blog at  http://casperkamal.spaces.live.com/ for more details.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116195554161719875?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116195554161719875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116195554161719875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116195554161719875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116195554161719875'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/stepping-through-aif-processing-code.html' title='Stepping through AIF Processing Code'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116195526652265391</id><published>2006-10-27T08:37:00.000-04:00</published><updated>2006-10-27T09:21:06.590-04:00</updated><title type='text'>Followup to AIF Configuration Entry</title><content type='html'>I noticed an additional comment onto my AIF Configuration entry today and decided I would answer and inject some new findings that I have since last discussed.  The comment asked how to add an additional field to an existing XML transaction such as the Purchase Order transaction which works off of the AxdPurchaseRequisition document.&lt;br /&gt;&lt;br /&gt;First of all the documentation up on MSDN is getting a lot better.  The documentation team has added many different articles on explanations of AIF, detailed explanations of the different transactions, and how the AxTable classes work compared to the Axd classes.  Check out Dynamics MSDN at http://msdn.microsoft.com/mbs/&lt;br /&gt;&lt;br /&gt;Generally, to add a field to any AIF transaction you must first determine the underlying tables to that transaction and add the appropriate fields.  In the case of Purchase Orders, the main underlying table to it is the PurchTable/PurchLines or for Sales Orders is SalesTable/SalesLines.  This is where you need to add the fields that you would like to appear in the AIF Transaction.  Also, if you want these fields to be editable by your users, of course you need to add these to the front end GUIs to these tables. After you have made these additions, run the Axd Class Wizard to make these additional fields appear in the respective action's schema.&lt;br /&gt;&lt;br /&gt;Axd Class Wizard Walkthrough&lt;br /&gt;1.)  Choose what Query is being used for the Axd Document Creation and click 'Next'.&lt;br /&gt;(If the AIF transaction is one that came with the base AX installation, the query will be named Axd..., i.e. AxdPurchaseRequisition.  You should also strive to name all of your custom AIF action queries with the 'Axd' prefix for standardization.)&lt;br /&gt; &lt;br /&gt;2.)  Leave the Class Name as-is and enter a label for the for the Axd class.  Choose what actions can be performed for this AIF document transaction and click 'Next'.  For a list of the actions' meanings, see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/AxDeveloperDocs/html/89e37bf6-3dda-4485-b123-d091f46cc2ed.asp.  You will notice that the 'Supported Actions' names on the Wizard correspond to the Axd Document Method column.&lt;br /&gt;&lt;br /&gt;3.)  On this final screen, if this is an existing Axd Document, you should see the 'Generate AxBC Classes' checkbox is grayed out.  Check the 'Regenerate existing AxBC Classes' checkbox and click 'Generate'.  If the Axd Document is new, check 'Generate AxBC Classes' and click 'Generate'.  &lt;br /&gt;&lt;br /&gt;4.)  Open the Actions form in Basic -&gt; Setup -&gt; AIF -&gt; Action.  If the Axd Document you were working on already existed, you can simply highlight the action and click the 'Re-register' button.  If the Axd Document was new, click the 'Scan and Register' button to reread all Axd Document classes, which will find your newly created class.&lt;br /&gt;&lt;br /&gt;5.)  Either way, after the scan and/or register process finishes, you should be able to highlight the appropriate action, click 'View Schema' and see the new field that has been added to the XML schema associated with the action.&lt;br /&gt;&lt;br /&gt;Finally, just a quick overview of what the AxTable classes are compared to the Axd classes:&lt;br /&gt;&lt;br /&gt;Axd classes extend the AxdBase class which contains the logic for developing the XML Schema and implementing the six Actions referenced above Create, CreateList, Send, SendList, findList, and findEntityKeyList.  There is also logic for validating the XML documents for compliance to the XML Schema associated with the Action. &lt;br /&gt;&lt;br /&gt;AxTable classes extend the AxInternalBase class and contain the logic for validating and writing data retrieved from the XML documents to their respective tables in AX.  This class contains data validation logic.  This logic is contain in each parmFieldName method within the respective AxTable class.&lt;br /&gt;&lt;br /&gt;Currently, I am working to write my own custom AIF validation logic, particularly in the createListSalesOrder action and particularly with the AxSalesLine.parmItemId() method.  Out of the box, AX kicks out any inbound XML SalesOrder that has a SalesLine that contains an ItemId that is not present within the InventTable.  I am working to write additional validations to check for the existence of ItemId in the InventTable and if it does not exist, assigning a 'catch-all' ItemId to ItemId such as 'InvalidItem', and writing the original invalid item to the Name field.  Ultimately the order will be halted and an alert will be sent to an Order Analyst who will try to determine what is invalid with the Item Id, but the order will still post in the SalesTable/SalesLine tables and won't be kicked out as with the current functionality.  My current modifications have yielded failure on the processing part of the AIF but I'm confident I will have success within the next week.  Once I determine how to add my validations without breaking the AIFInboundProcessing process, I will post my findings.&lt;br /&gt;&lt;br /&gt;I see AIF as have the potential of being extremely powerful and extendable to incorporate custom business logic, but the documentation so far is nonexistent of how to do so in a standardized way in which you won't systematically blow up the existing processes (like I have in my tinkering).&lt;br /&gt;&lt;br /&gt;I hope this helps.  If you have any questions, I'll try to answer them as best as I can in subsequent entries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116195526652265391?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116195526652265391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116195526652265391' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116195526652265391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116195526652265391'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/followup-to-aif-configuration-entry.html' title='Followup to AIF Configuration Entry'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116187380628428236</id><published>2006-10-26T10:40:00.000-04:00</published><updated>2006-10-26T10:43:26.286-04:00</updated><title type='text'>SP1 Enhancements Released to PartnerSource</title><content type='html'>I just reviewed the SP1 Enhancements that was posted up on PartnerSource.  The enhancements won't impact us very much except for the well known fixes in SP1 like AOS Load Balancing issue being resolved.  I won't repeat this list here as I don't know if the information is public domain at this point.  If you have a partner who is willing to pass the document over to you, then by all means have at it.  It's the 'Microsoft Dynamics AX Feature Updates (3.0 to 4.0) with the updated Appendix that lists all of the SP1 Enhancements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116187380628428236?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116187380628428236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116187380628428236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116187380628428236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116187380628428236'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/sp1-enhancements-released-to.html' title='SP1 Enhancements Released to PartnerSource'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116181740074995511</id><published>2006-10-25T18:42:00.000-04:00</published><updated>2006-10-25T19:03:20.763-04:00</updated><title type='text'>Unexpected MODULUS functionality in AX 3.0/4.0</title><content type='html'>I came across this problem late yesterday afternoon and struggled with it again this morning until I received clarification from Microsoft on its intended functionality.  I thought I would pass this along for those who may be struggling also.  &lt;br /&gt;&lt;br /&gt;I was working towards building functionality to test for the existence of line numbers in the Sales Line table where the line number had a .5 in it.  For instance, if the line number was 2.5, I was attempting to perform 2.5 MOD 1 in order to get a result of .5.  The only problem was that the system would not give me .5 but instead 0.  It turns out that when the original AX developers wrote Axapta, they set the MOD function to only work against integers and not reals, hence the reason why I always got the whole number portion of the line number rather than the decimal part.&lt;br /&gt;&lt;br /&gt;My workaround was writing a static method that converts the Line Number into a string, determines where the decimal place is in the string, performs a substring to pull out everything to the right of the decimal and convert it back to a real number and return it.  This is essentially doing the same thing as MOD 1 would do to a whole number that has a fractional part.&lt;br /&gt;&lt;br /&gt;Hope this bit of info helps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116181740074995511?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116181740074995511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116181740074995511' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116181740074995511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116181740074995511'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/unexpected-modulus-functionality-in-ax.html' title='Unexpected MODULUS functionality in AX 3.0/4.0'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116147318864663665</id><published>2006-10-21T19:21:00.000-04:00</published><updated>2006-10-21T19:26:28.656-04:00</updated><title type='text'>Creating Header/Detail-based Linkage On One Form</title><content type='html'>I have been struggling with a seemingly simple concept over the past couple days:  &lt;strong&gt;How to setup a form that has two grids where one grid represents header-level data and the other grid represents detail-level data with the proper linkage. &lt;/strong&gt; In all of the books, newsgroups, and blogs out there no one has yet to tackle documenting this seemingly simple task until now.  I managed to get the form running tonight and I am posting this in case someone else may be struggling just like I have been.  In my struggles I tried to mimic both the architecture and properties of both the SalesTable and SysEmailTable forms which have Header and Detail grids.  Even after duplicating what these two forms use, my form still did not work properly.  In all cases my detail form showed all records no matter which header record I placed focus on.  Below is the steps that I have verified that successfully develops a header and detail grid.  There may be other ways to accomplish this but this process definitely works.&lt;br /&gt;&lt;br /&gt;1.) &lt;strong&gt;SETUP THE DATABASES:&lt;/strong&gt;  If you have not already, create your header records table and your detail records table.  &lt;br /&gt;a. Creation of your tables should include adding the appropriate Extended Data Types to your table for the fields you would like it to have.  &lt;br /&gt;b. Your Detail table should include the field that is in your Header table that you wish to use as the key between the two tables.&lt;br /&gt;c. Add Indexes to both tables while including the key to your header table in the index along with including the same field that is in your Detail table as part of the index.&lt;br /&gt;d. Add a relation to the Detail table to join the fields that appear in both the Header and Detail tables together.&lt;br /&gt;e. If you wish to prevent database anomalies, add a DeleteAction to the Header table that performs a 'Cascade' DeleteAction on the Detail table.&lt;br /&gt;2.) &lt;strong&gt;LINK DATABASES TO FORM:&lt;/strong&gt;  Drag the Header and Detail table into the Data Sources node of the Form you wish to use to display the two.&lt;br /&gt;a. Set the Detail table's properties JoinSource property to the name of the Header table and verify the LinkType is set to Delayed.&lt;br /&gt;b. If you do not want AX to automatically add a new record if no records exist, set InsertIfEmpty to 'No' in the Data Source properties of the Detail and/or Header data sources.&lt;br /&gt;3.) &lt;strong&gt;DESIGN FORM FROM DATABASES:&lt;/strong&gt;  Add the appropriate container hierarchy to your form design and add the appropriate fields to each.&lt;br /&gt;a. In my form, I created three groups within the form:  Header, ControlSplit, and Detail.  &lt;br /&gt;b. The Header Group contains a Tab, within the Tab a TabPage, and within the TabPage a Grid control.  The Grid control's datasource property is set to the Header table.&lt;br /&gt;c. The Detail Group contains a grid control with the datasource property set to the Detail table.&lt;br /&gt;d. Within the Header and Detail Group's grid, I dragged the appropriate fields/field groups into their respective grids.&lt;br /&gt;&lt;br /&gt;Using these steps you should be able to correctly link Header Table data within a form to Detail Table data where only Detail Table data is displayed based upon the current Header Table data record. &lt;br /&gt;&lt;br /&gt;I hope this helps those of you who maybe new to AX like myself and are struggling with a similar problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116147318864663665?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116147318864663665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116147318864663665' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116147318864663665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116147318864663665'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/creating-headerdetail-based-linkage-on.html' title='Creating Header/Detail-based Linkage On One Form'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-116058907582343113</id><published>2006-10-11T13:10:00.001-04:00</published><updated>2006-10-11T13:54:47.746-04:00</updated><title type='text'>AIF Documentation Increasing...</title><content type='html'>&lt;em&gt;I apologize for the delay since my last post. I'm working on several development projects, including Dynamics AX and just about all are unchartered territory, as well as administering our network and day-to-day IT operations.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;AIF documentation is starting to be published up on MBS MSDN. I found some docs that really describe what AIF is all about in the Developer Documentation. These docs are only available up on MSDN and no equivalent .chm docs have been released to update the local help within AX.&lt;br /&gt;&lt;br /&gt;You can find them under msdn.microsoft.com under:&lt;br /&gt;&lt;br /&gt;-Servers and Enterprise Development&lt;br /&gt;-Microsoft Business Solutions&lt;br /&gt;-Microsoft Dynamics AX&lt;br /&gt;-Developing for Microsoft Dynamics AX&lt;br /&gt;-Microsoft Dynamics AX SDK&lt;br /&gt;-Microsoft Dynamics AX and Other Applications&lt;br /&gt;-Using Microsoft Dynamics AX and Other Applications&lt;br /&gt;-&lt;strong&gt;Creating New Documents&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This area has helped me understand really what the difference between the Axd classes and the Ax[Table] classes. To sum it up, Axd classes define the XML Schema for the document and Ax[Table] classes validates the data being exported or imported via XML.&lt;br /&gt;&lt;br /&gt;My company's order receiving process is very non-standard due to restrictions mandated to us by our parent company. As a result some of the AIF/SalesOrder predefined pieces do not work for us out of the box. For example, we have to accept invalid Item Ids and return them via EDI to the customers who sent them. Out of the box AIF does not accept an order than has one or more invalid Item Ids. With this new documentation, I see now that I do not have to reengineer the AIF framework, but rather only add a few lines of code to handle invalid Item IDs within the AxSalesLine class.&lt;br /&gt;&lt;br /&gt;As more and more documentation is released on AIF, the majority of which doesn't look likely to come until after the first of the year, more businesses will be able to customize the AIF document handling process to their specific needs.&lt;br /&gt;&lt;br /&gt;I'd like to also say how great Microsoft Support has been during our learning AIF. They have had two LiveMeeting sessions with me so far and have answered all of the indepth technical questions regarding AIF that I have been able to think of. The guys attending the sessions have been AX AIF developers and project management so Microsoft is serious about issue resolution and taking the IT/Development AX Users straight to the people who know the product in and out.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-116058907582343113?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/116058907582343113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=116058907582343113' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116058907582343113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/116058907582343113'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/10/aif-documentation-increasing_11.html' title='AIF Documentation Increasing...'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-115763562592086754</id><published>2006-09-07T09:20:00.000-04:00</published><updated>2006-09-07T09:27:05.920-04:00</updated><title type='text'>readPickingList AIF Action XML Export Problem Resolved!</title><content type='html'>In my previous entry detailing the process of setting up the AIF File System Adapter XML Export Capabilities, I mentioned the problems that I had been having with not being able to export the picking list through the readPickingList action.  It turns out that if you have 'LogisiticsRegistration' configuration key enabled and you have the 'Set inventory transactions to picked' option unchecked, you will get the same errors that I received.  Apparently this option doesn't check itself by default when you enable the LogisticsRegistration config key.  The option is located at the following form:  Accounts receivable -&gt;  Setup -&gt; Parameters -&gt; Update Tab.&lt;br /&gt;&lt;br /&gt;Check the option, recreate a sales order, post the picking list and then you will be able to export it through the 'Inquries' button. &lt;br /&gt;&lt;br /&gt;Note:  This will not allow any Picking Lists posted previous to the option change to be exported.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115763562592086754?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115763562592086754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115763562592086754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115763562592086754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115763562592086754'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/09/readpickinglist-aif-action-xml-export.html' title='readPickingList AIF Action XML Export Problem Resolved!'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-115694329302015330</id><published>2006-08-30T08:57:00.000-04:00</published><updated>2006-08-30T09:08:13.040-04:00</updated><title type='text'>Login Times in AX 4.0</title><content type='html'>I have been struggling with determining what is causing such sluggish login speeds whenever we log into AX 4.0, but have yet to determine the cause. I have had MBS support working with me on it, after much of my own troubleshooting combined with their troubleshooting suggestions and even as going as far to Profile the SQL server activity during the login period, a cause has not yet been determined.&lt;br /&gt;&lt;br /&gt;Our development environment consists of two Dell servers, both running Dual Xeon 2.8s or higher, with 2GB of memory, both on GB ethernet, both Win2K3Ent. One server is a Development DC and SQL Server and the other server is an AOS/Terminal Services server. Either logging onto the AOS/TS and launching AX or logging onto the SQL/DC server and launching AX yields between 13 to 15 second login times. If I install the client directly onto my notebook (P-M 2.26 2GB RAM, 100Mbps eth XPPro) and login, same speed 13 to 15 seconds. I realized this morning after setting up dedicated 'Batch Server' from a Dell Optiplex P3 500 with 256MB RAM, also on 100Mbps eth (same switch as my notebook), and running Win2KPro, that the slowness couldn't be resource related because the Batch Server logs in within one to two seconds max.&lt;br /&gt;&lt;br /&gt;This seems to me like it's an issue with AD and maybe the backwards authentication capability of a Win2KPro box onto a Win2K3Ent domain is different since WinXPPro and Win2K3Ent would logically have the same provisions for authenticating on a Win2K3 domain. I guess I'll have to wait and see if MS has any idea as to what the problem relates to with the addition of this new information. Is anyone else experiencing this long of login times? It's not 'crucial' for the login times to drop since a typical user will only login to AX once per day, but still it would be nice to shave at least half of that time off, but now that I know it can login between 1 to 2 seconds, that would be ideal to achieve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115694329302015330?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115694329302015330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115694329302015330' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115694329302015330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115694329302015330'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/08/login-times-in-ax-40.html' title='Login Times in AX 4.0'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-115686010608934955</id><published>2006-08-29T09:54:00.000-04:00</published><updated>2006-08-29T10:01:46.090-04:00</updated><title type='text'>Inside Dynamics AX by MSPress</title><content type='html'>I ordered &lt;u&gt;Inside Dynamics AX&lt;/u&gt; yesterday from nerdbooks.com.  They have by far the cheapest price on this book and other technical books that I purchase, plus the usually ship out within 30 minutes of order placement.  These guys definitely know how to run an online book sales business.  I was planning to buy three copies but they only had one.  I'll get the other two when they are restocked.&lt;br /&gt;&lt;br /&gt;Looking forward to getting the book in my hands on Thursday and I'll post a review on how '4.0'-based it is compared to the Axapta 3.0-based &lt;u&gt;Dynamics AX: A guide to Microsoft Axapta.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We are ordering our new 9G Dell Servers for our permanent environment today or tomorrow.  We are getting two Dual Core Dual Chip 1900 series 1Us and one Dual Core Dual Chip 2900 series 2U.  Our production environment will be utilizing the Quad Core Dual Chips but those will not be out until late Q4 most likely. &lt;br /&gt;&lt;br /&gt;Our go live date is set for January 2!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115686010608934955?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115686010608934955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115686010608934955' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115686010608934955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115686010608934955'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/08/inside-dynamics-ax-by-mspress.html' title='Inside Dynamics AX by MSPress'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-115685924052748886</id><published>2006-08-29T09:38:00.000-04:00</published><updated>2006-08-29T09:47:20.556-04:00</updated><title type='text'>AIF Configuration and Additional Findings</title><content type='html'>There has been little documentation, if any, either on MSDN or CustomerSource regarding the implementation of AIF Services with the File System Adapter.  I have worked over the past month in an effort to figure out how to implement and use both outbound and inbound services and I hope you find this information useful.&lt;br /&gt;&lt;br /&gt;An overview of AIF&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;AIF (Application Integration Framework) was implemented to allow for you to receive or send XML files based upon predefined or user-defined XML Schemas tied to actions that can be triggered in order to insert record(s) or extract record(s) to/from AX.  Microsoft provides three different transport adapters that can be bound to multiple channels for processing the inbound/outbound flow of these documents.  The three transport adapters are Web Services, Microsoft Messaging Queue, or File System. &lt;br /&gt;&lt;br /&gt;Web Services provide exactly what you would expect:  it offers an interface for you to provide to your vendors, partners, subsidiaries, etc for them to build an application that accesses data you have allowed them to access.&lt;br /&gt;&lt;br /&gt;Microsoft Messaging Queue allows for you to implement XML document passing via applications which support the MSMQ technology.  Entities that are allowed access to sending/receiving data from AX can submit XML documents and recieve XML documents through MSMQ and consume or post data from/to AX.  MSMQ can be utilized in conjunction with a Message Brokering service such as BizTalk.&lt;br /&gt;&lt;br /&gt;Finally, the topic I will be covering is the File System transport adapter, which is a method of passing XML documents except it does so via the Windows/Linux/Unix/other OS file system environments for those companies (like mine) who either have no message brokering software such as BizTalk 200x or have a message broker which does not utilize MSMQ. &lt;br /&gt;&lt;br /&gt;I will explain the steps of how to implement AIF using the file system adapter but before we get started, a bit of planning must first take place.  You must ask yourself that following questions:&lt;br /&gt;&lt;br /&gt;1.) What data do you want to pass/receive?&lt;br /&gt;2.) Who do you want to allow to receive/send data?&lt;br /&gt;3.) Do you want to filter which data can be sent/received?&lt;br /&gt;4.) Do you need to setup provisions for validating/translating that data?&lt;br /&gt;&lt;br /&gt;Data that you pass to entities or receive from them are grouped into 'Actions'.  Actions are grouped into sending groups of data or receiving groups of data.  You can find a list of available actions in AX under Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Actions.  If the list is blank, you must click the 'Scan and Register' button and the form will search through the AOT and find all applicable AIF Actions and provide them in the list. &lt;br /&gt;&lt;br /&gt;As you well know, AX provides authentication directly from Windows Active Directory integration and as a result AIF utilizes that same authentication.  An entity who consumes/provides data to you must be a member of your AD, be it a stripped account with access only to the file system folders needed to receive/submit XML documents.  The first step to setting up AIF is implementing the necessary accounts to provide access to the respective folders that will act as a medium for XML document passing. &lt;br /&gt;&lt;br /&gt;If you want to lock down for a particular entity what data they can send or receive, you may do so by putting constraints on the data.  These constraints can limit record insertion/retrieval by Customer ID, Vendor ID, Warehouse ID, or a combination of the three.  &lt;br /&gt;&lt;br /&gt;If you need to translate data or validate data, you will need to setup a middleware message brokering system to have a maximum affect across all of your documents, however if you only need to validate a small amount of documents you may be able to achieve your goal through custom X++ coding tied to the AIF process.  For translations of fields in an XML document, AX provides a basic field translator useful for translating data that maybe different for an external partner than for your internal company, i.e. external part numbers versus internal part numbers. &lt;br /&gt;&lt;br /&gt;Now that you are thinking in terms of AIF, we can move forward with setting up the AIF processes.  Each step will be universal to both inbound and outbound services unless I specify otherwise.&lt;br /&gt;&lt;br /&gt;Configuring AIF&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;1.)    Create the appropriate folders to output/receive data from your XML document trading partners.  You can come up with multiple strategies for deploying these folders based upon your security concerns and your need for segregating data among multiple consumers/providers.  You could create a parent folder with subfolders containing the individual entities name and then subfolders below that are dedicated to inbound/outbound services.  Under each inbound/outbound services, you could have subfolders named for each individual action. &lt;br /&gt;&lt;br /&gt;You could even break down the hierarchy even further and have multiple subfolders under each action that are broken down by Customer/Vendor/Warehouse constraints so that only certain data can be outputted/received under those folders.  You could also simplify the folder hierarchy to whatever you deem necessary for your AIF implementation, however the suggestion above works well for those who want to compartmentalize their data flows.  Once you have created your folders, you must provide the ‘Network Service’ with full control to those folders. &lt;br /&gt;&lt;br /&gt;2.)    Next, you must setup the local endpoint for your organization.  Local endpoints are created from your companies in AX.  If you are only wanting to exchange documents with one of your companies within AX then you only need to create a local endpoint from that company.  The local endpoint can be created by going into the Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Local Endpoints menu.  Add a new record and select the company and create a name for that local endpoint. &lt;br /&gt;&lt;br /&gt;3.)    If you have not setup the File System Adapter, you will need to next enter the Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Transport adapters menu.  If you do not have a record already existing in the list that has ‘AifFileSystemAdapter’ under the Adapter Class column, then create a new record and select ‘AifFileSystemAdapter’ from the Adapter Class column.  Set the Adapter as ‘Active’.&lt;br /&gt; &lt;br /&gt;4.)    Next we will create the channels that you will be using.  Channels link the File System Adapter to which direction documents will be flowing and from/to which folder the documents will go/arrive.  Open the Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Channels menu.  Create a new record and set the Channel ID and Channel Name.  The Channel ID will be the referenced name when you select a channel linking the Endpoints to the channel.  More on Endpoints to come soon...  Set the adapter for the new record, which should be ‘File System Adapter’ and also set the direction. &lt;br /&gt;&lt;br /&gt;The direction can be either ‘inbound’ or ‘outbound’ but it cannot be ‘both’ for the File System Adapter.  After you have selected the direction, you can select the Address which will be the physical folder location on the machine where the XML documents will be sent from/received to. &lt;br /&gt;&lt;br /&gt;5.)    The next stop on our agenda will be the Actions menu again (if you went to it previously from our discussion in this article).  Actions is located in Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Actions.  If you did not do so previously (or it may be a good idea to do so again), click the ‘Scan and Register’ button on the Actions form.  This will go through the entire AOT and register any Axd Document classes that are designed to work with the AIF module.  For each Action that you would like to use, check the ‘Active’ field after all Actions have been registered. &lt;br /&gt;&lt;br /&gt;6.)    The final step in our setting up AIF within AX is to create Endpoints.  Endpoints are the entities (or Trading Partners) with which you will exchange documents.  You can reach the Endpoints menu by going to Basic -&gt; Setup -&gt; Application Integration Framework -&gt; Endpoints.  Create a new record and enter an Endpoint ID.  This should be descriptive as to who the entity/Trading Partneris since it will be what you select for some of the forms that require you to manually select an endpoint.  Next, you will create a name for the endpoint and also choose the local endpoint that will be communicating with the entity/trading partner.  If you have multiple companies in AX and each company will be exchanging documents with this particular Endpoint, then you will need to have one Local Endpoint for each company and AX, plus multiple Endpoints setup for the same entity/Trading Partner to join to each individual Local Endpoint. &lt;br /&gt;&lt;br /&gt;The Endpoint to Local Endpoint relation is one-to-one.  The next step to configuring the Endpoint is to go to the Constraints tab and either select ‘No Constraints’ or add as many Constraint records as you wish.  As I alluded to earlier, constraints may be created for customers, vendors, or warehouses.  So far the only Action that requires constraints is the ‘readPickingList’ action.  (I will go into more detail about this action earlier as I share with you the current experience I am having with setting up this action. )  The next step is to configure the ‘Users’ tab.  In the Users tab, you can set up one or multiple users (AD logins) or one or more groups (AX security groups).  This is the security that is built into AX so that not just anyone can send/receive XML documents into/out of your system.  You can also setup ‘Trusted Intermediaries’ which would be like another AD with which you would setup a ‘trust’ relationship.  &lt;br /&gt;&lt;br /&gt;Finally the last major step in setting up the Endpoints is setting up the Action Policies associated with the Endpoints.  This piece ties the Endpoint to the Actions that we viewed earlier.  Click the ‘Action Policies’ button on the Endpoints form.  Here we will create a new record and select an Action to tie to the Endpoint.  (Note:  only actions that you have activated will appear in the list.  If you want to see all actions appear, then you will need to go back to the Actions menu and Activate all Actions.)  After selecting an Action, set the status to ‘Enabled’ and set the logging mode to your preference.  I use the ‘Log All’ mode in order to get all information about problems with AIF transactions. &lt;br /&gt;&lt;br /&gt;Once you have filled out the record, click the ‘Save’ button on the toolbar to save the record and you will see the ‘Data Policies’ button highlight on the Action Policies form.  Click the ‘Data Policies’ button and you will see all of the XPath elements that will be included in the XML document for this particular action.  In order to allow all elements to be displayed, click the ‘Set’ button and select ‘Enable All’.  The final step will be to exit out of the Data Policies Form, and then out of the Action Policies form, and when you are back in the Endpoints form, select the ‘Active’ checkbox on the General tab in order to activate the Endpoint. &lt;br /&gt;&lt;br /&gt;7.)    If you are receiving XML documents inbound into AIF, there are a couple of things that must happen to the documents before AIF will accept them.  First, at least one of the person(s) or members of group(s) that are listed under the User tab in the Endpoint menu must be the owner of the inbound XML document.  You can check this by right-clicking the document, selecting Properties, selecting the Security tab, clicking the Advanced button, and choosing the Owner tab.  Below you will see a list of users who are owners of the document.  Whichever one that is in the list that also is listed in the Users tab of the Endpoints, you must highlight this user and select Apply.  You should see that the owner of the document changes to that user. &lt;br /&gt;&lt;br /&gt;AIF will not process a document if the owner of the document is not affiliated with the ‘Users’ tab in Endpoints.  Within the XML document being sent inbound, there is an area in the XML header that allows you to set the MessageID, SourceEndpointUser, SourceEndpoint, and DestinationEndpoint.  The MessageID must be a unique GUID, the SourceEndpointUser must be set to same user that is the owner of the inbound XML document in the format of ‘DOMAIN\USERNAME’, the SourceEndpoint must be the Endpoint ID from the Endpoint menu who sent you the XML document, and the DestinationEndpoint must be set to the Local Endpoint ID which will be the company in AX that should be receiving the XML file that you defined earlier in the article in Local Endpoints. &lt;br /&gt;&lt;br /&gt;8.)    Now that you have setup AIF, you must setup the batch processes to execute the AIF processes.  I will not go through the batch process setup as there is plenty of resources out on MSDN that defines this, plus batches are not new to AX 4.0.  I will let you know that in your Batch Journal Types, for AIF File System adapter processes to be batched, you must select the ‘AifInboundProcessingService’ and the ‘AifOutboundProcessingService’ for the inbound and outbound AIF processes to be batched.  You can also view errors and the Queue Manager that has the documents waiting to be processed in the Basic -&gt; Periodic -&gt; Application Integration Framework menu.&lt;br /&gt;&lt;br /&gt;Additional Thoughts on AIF&lt;br /&gt;---------------------------------&lt;br /&gt;&lt;br /&gt;A couple of additional words regarding AIF.  I have so far tested the inbound AIF and not had any problems posting XML documents to AX as long as all steps are followed correctly.  The only problems I ran into were related to not correctly setting the owner of the document and the SourceEndpointUser.  I have however ran into a problem utilizing the outbound ‘readPickingList’ action.  For some reason I cannot execute that action and even after debugging the code I cannot tell what the reason is. &lt;br /&gt;&lt;br /&gt;It specifically looks for a constraint to be set for the warehouse, which I have but because the InventDim record is not being set into the code that exports the XML document, it will not execute properly.  The problem is that there is no code for setting the InventDim record, nor does the function pass in a pointer to the InventDim record associated with the picking list.  I currently am working with Microsoft to come up with a solution and will post back on here what their/my findings are once there is resolution.&lt;br /&gt;&lt;br /&gt;Also, I have yet to figure out where the ‘Send Electronically’ buttons are located for the ‘readListInventoryOnHand’, ‘readListInventoryTransactions’, and ‘readListSalesOrder’.  If I am able to find where these buttons are, I will post an update to the blog detailing their location. &lt;br /&gt;&lt;br /&gt;As a quick reference for you also, I am including the list of all of the outbound actions and the location of the button that triggers them:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  findListChartofAccounts - &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;sends Chart of Accounts&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  GL\Chart of Accounts\Send Electronically&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  findListExchangeRates - sends Exchange Rates&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  GL\Setup\Exchange Rates\Send Electronically&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  readASN (Packing List) - sends Packing Slip&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  AR\Sales Order\Inquiries\Packing Slip\Send Electronically&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  readSalesInvoice - sends Sales Invoice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  AR\Sales Order\Inquiries\Invoice\Send Electronically&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  readListPriceList - sends Price List&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  AR\Customers\Trade Agreement\Send Electronically&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  findListDimensions - sends GL Dimensions List&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  GL\Dimensions\Send Electronically&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  readPickingList - sends Picking List&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  AR\Sales Order\Inquiries\Picking List\Send Electronically&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Action ID\Description:  readListPurchaseRequisition - sends PO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;Button Location:  AP\PO\Inquiries\PO\Send Electronically&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;If you happen to find something that I have missed or would like to comment further on any of my findings above, please do so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115685924052748886?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115685924052748886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115685924052748886' title='52 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115685924052748886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115685924052748886'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/08/aif-configuration-and-additional.html' title='AIF Configuration and Additional Findings'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>52</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30350916.post-115163488536237327</id><published>2006-06-29T22:21:00.000-04:00</published><updated>2006-06-29T22:37:48.926-04:00</updated><title type='text'>Preliminary Installation and Toying</title><content type='html'>Today and Yesterday were filled with playing around with my new software toy....Dynamics AX 4.0. We received our initial CDs and License keys. I installed the Demonstration on my laptop inside of a Virtual PC and I installed a preliminary development server on our new PE 2850. I have the Development Environment implementation broken up into three distinct servers: A VM SQL Server, A VM AOS/File Server, and an IIS Server. I installed the client on the Domain Controller hosting the three VMs and I was shocked how easy it's installation was. According to what I've read it's apparently exponentially easier to install than it's predecessor, Axapta 3.0.&lt;br /&gt;&lt;br /&gt;Surprisingly, there's quite a bit of documentation in the What's New guides and Implementations Guide. Judging by how antiquated and pieced together the Axapta 3.0 docs were, this was not expected. Tomorrow will be spent rummaging through the docs and get a basic AX install configured. Our Partner will be on site the week after July 4th and will step me through their recommended installation process and setting up a base installation. At least by that time comes I will have at minimum installed it twice, maybe three times, and will have an idea about questions to ask when he/she guides me through the correct way.&lt;br /&gt;&lt;br /&gt;From what I see so far this is an enormous package. I'm sure it's nothing quite like SAP, but still nonetheless it's huge. One piece alone, the AIF, is almost a complete mammoth application just in itself. I'm going to be concentrating on getting some sample documents templates out so that I can test some scenarios of EDI parsed and translated through our Message Brokering software to be outputted and inserted into AX.&lt;br /&gt;&lt;br /&gt;I will continue to update my progress on this site and look forward to comments regarding my experiences. I'm looking forward to this journey as it will be a long one lasting roughly 16 to 24 months before we are fully live on AX.&lt;br /&gt;&lt;br /&gt;Hope you enjoy the ride,&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115163488536237327?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115163488536237327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115163488536237327' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115163488536237327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115163488536237327'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/06/preliminary-installation-and-toying.html' title='Preliminary Installation and Toying'/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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-30350916.post-115143586730922370</id><published>2006-06-27T15:17:00.000-04:00</published><updated>2006-06-27T15:17:47.316-04:00</updated><title type='text'></title><content type='html'>This is a test&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30350916-115143586730922370?l=daxdave.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daxdave.blogspot.com/feeds/115143586730922370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30350916&amp;postID=115143586730922370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115143586730922370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30350916/posts/default/115143586730922370'/><link rel='alternate' type='text/html' href='http://daxdave.blogspot.com/2006/06/this-is-test.html' title=''/><author><name>David Bowles</name><uri>http://www.blogger.com/profile/00385902061237326277</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>
